2011-08-25 4 views
8

나는 다음과 R 스크립트했다 "PortalServer1"에 대한 PNG 이미지 데이터를 결과에서플롯 기능은 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() 

는 점으로하고 검은 색으로 그려진,하지만 돼있 빨간색 줄이 그려져있다. 다른 하나는 녹색 선으로 예상대로 그려집니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집는 다음은 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

어떤 데이터 형식이'P1 $ Time'입니까? 질문에'str (P1)'의 결과를 붙여주세요. – Andrie

+0

@Andrie, X 구조에 대한 정보로 질문을 업데이트했습니다. –

+0

아마 $ Time을 인자로 사용하고 싶지 않을 것입니다. 이것을'? POSIXct' 객체처럼 유용한 것으로 변환하면 R은 좀 더 적절하게 처리 할 것입니다. –

답변

8

@GavinSimpson 이미 문제를 해결하는 방법에 댓글을 달았습니다. 이것은 주석이어야했지만 너무 길었습니다. 간단히 말해서 원래의 형태로 데이터를 가진 플롯에 어떤 일이 일어 났는지 간단히 설명합니다.

factor 데이터를 플로팅합니다. 결과적으로 함수 plot을 호출하면 S3 메소드 디스패치는 plot.factor을 호출합니다.

?plot.factor에 대한 도움말을 읽으면 얻은 플롯 유형이 두 번째 매개 변수의 유형에 따라 달라집니다. 이것은 또한 요인이기 때문에 궁극적으로 당신의 계획은 spineplot에 의해 그려집니다. 따라서 귀하의 type="l"은 본질적으로 무시됩니다. 색상은

역방향 데이터 엔지니어링 ...하지만, 빨간색으로 그려집니다,이 같은 얻을 :

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

깊이있는 설명 주셔서 감사합니다 :) –

0

다소 해키 솔루션을하지만, 모든 요소 작동하지 그냥 타임 스탬프.

변경

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") 

에이 코드는 먼저 어떤 실제로 데이터, 단지 축을 그립니다. 그런 다음 lines을 사용하여 실제 데이터를 그립니다. plot.factor