2011-08-25 28 views
8

tôi đã kịch bản R sau:cốt truyện không mất loại âm mưu vào tài khoản bằng ngôn ngữ R

X <- read.table("/tmp/run178/data/monitor/portal_free_heap_monitor.log", header=T, sep=";") 

P1 <- subset(X, Server=="PortalServer1") 
P2 <- subset(X, Server=="PortalServer2") 

png("mygraph.png") 
plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 
q() 

Trong kết quả dữ liệu hình ảnh PNG cho "PortalServer1" được vẽ bằng dấu chấm và màu đen, nhưng nó là nghĩa vụ phải được vẽ bằng các đường màu đỏ. Một trong những khác được rút ra như mong đợi với dòng màu xanh lá cây. Tôi đang làm gì sai?

EDIT: Đây là cấu trúc của X:

> str(X) 
'data.frame': 5274 obs. of 3 variables: 
$ Time   : Factor w/ 2654 levels "2011.08.24 14:39:29",..: 1 1 2 2 3 3 4 4 5 5 ... 
$ Server   : Factor w/ 2 levels "PortalServer1",..: 1 2 1 2 1 2 1 2 1 2 ... 
$ HeapFreePercent: int 42 49 41 49 41 49 41 49 41 49 ... 
+0

Loại dữ liệu nào là 'P1 $ Time'? Vui lòng dán kết quả của 'str (P1)' vào câu hỏi của bạn. – Andrie

+0

@Andrie, tôi đã cập nhật câu hỏi với thông tin về cấu trúc X –

+0

Có thể bạn không muốn '$ Time' làm yếu tố. Chuyển đổi nó thành một cái gì đó hữu ích như một đối tượng '? POSIXct' và sau đó R sẽ làm một cái gì đó hơi thích hợp hơn với nó. –

Trả lời

8

@GavinSimpson đã nhận xét về làm thế nào để khắc phục vấn đề của bạn. Điều này phải là một bình luận, nhưng quá dài. Tôi chỉ đơn giản giải thích những gì đã xảy ra với cốt truyện của bạn với dữ liệu của bạn ở dạng ban đầu của nó.

Bạn đang vẽ dữ liệu loại factor. Do đó, khi bạn gọi hàm plot, phương thức gửi S3 sẽ gọi plot.factor.

Nếu bạn đọc trợ giúp cho ?plot.factor, bạn sẽ nhận thấy rằng loại ô bạn nhận được cũng phụ thuộc vào loại thông số thứ hai của bạn. Vì đây cũng là một yếu tố, cuối cùng cốt truyện của bạn được vẽ bởi spineplot. Vì vậy, type="l" của bạn về cơ bản bị bỏ qua. Các màu sắc được vẽ màu đỏ, mặc dù ...

Reverse Engineering dữ liệu của bạn, tôi nhận được một cái gì đó như thế này:

X <- data.frame(
    Time = sort(sample(letters, 100, replace=TRUE)), 
    Server = sample(c("PortalServer1", "PortalServer2"), 100, replace=TRUE), 
    HeapFreePercent = runif(100)) 
str(X) 

P1 <- subset(X, Server=="PortalServer1") 
P2 <- subset(X, Server=="PortalServer2") 

plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

enter image description here

+0

Cảm ơn bạn đã giải thích chi tiết :) –

0

Một giải pháp hơi hacky nhưng nó hoạt động cho tất cả các yếu tố, không chỉ dấu thời gian.

Thay đổi

plot(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

để

plot(P1$Time, P1$HeapFreePercent, type="n") 
lines(P1$Time, P1$HeapFreePercent, type="l", col="red") 
lines(P2$Time, P2$HeapFreePercent, col="green") 

Mã này đầu tiên thu hút không thực sự dữ liệu, chỉ cần trục. Sau đó, nó thu thập dữ liệu thực tế bằng cách sử dụng lines, tránh gọi plot.factor

Các vấn đề liên quan