2012-08-14 2 views
0

에 색상을 변경 :ggplot는, 측면, 그리고 일련의 I는 다음과 같습니다 센서 데이터를 가지고

tm <- seq(1,17) 
chg <- c(13.6,13.7,13.8,13.9,14.1,14.2,14.4,14.6,14.7,14.9,14.9,15.0,15.0,13.7,13.7,13.6,13.7) 
batt_A <- c( 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 0, 0) 
batt_B <- c( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1) 
bus <- c(12.4,12.5,12.4,11.7,11.6,12.2,12.4,11.8,11.7,11.5,12.1,12.0,11.6,11.5,11.4,12.6,12.5) 
pwr <- data.frame(tm,batt_A,batt_B,chg,bus) 

나는 별도의면 패널에 두 개의 선 그래프 (TM에 대한 증감 률 및 버스)를 만들려고합니다. 이 트위스트는 각 배터리가 어떤 배터리를 추적하고 있는지를 나타 내기 위해 각 라인을 채색하고 싶습니다. 그래서 batt_A> 0이라면, 충전 중이며 충전 라인을 녹색으로 바꾸고 싶습니다. 그리고 batt_A == 0이라면, 그것은 버스에 있고, 나는 버스 선을 녹색으로 원한다. batt_B와 동일합니다. 단, 줄은 파란색 (또는 다른 색상)이됩니다.

나는 용융 + 패싯 조합을 얻지 만 색상을 추가하는 방법은 무엇입니까?

가 (추신 :이 같은 시간 척도에 다양한 6 개 이상의 센서가 내가 그들 모두를보고 싶어하기 때문에 나는면을 사용하고 있습니다)

레코딩 아래 Andrie의 대답으로

, 나는이 솔루션에 도착하지만입니다 끔찍한 :

mpwr <- melt(pwr, id.vars=1:3) 

mpwr$batt <- '' 
mpwr$batt <- ifelse(mpwr$batt_A>0 & mpwr$variable=="chg", "A", mpwr$batt) 
mpwr$batt <- ifelse(mpwr$batt_B>0 & mpwr$variable=="chg", "B", mpwr$batt) 
mpwr$batt <- ifelse(mpwr$batt_A==0 & mpwr$variable=="bus", "A", mpwr$batt) 
mpwr$batt <- ifelse(mpwr$batt_B==0 & mpwr$variable=="bus", "B", mpwr$batt) 
mpwr$batt <- as.factor(mpwr$batt) 

ggplot(mpwr, aes(x=tm, group=1)) + 
    geom_line(aes(y=value, colour=batt)) + 
    geom_line(aes(y=value, colour=batt)) + 
    facet_grid(~variable) + 
    scale_colour_discrete("Charging") 

데이터 처리는 정리할 수 있지만 거기에 있다고 생각합니다! 다음과 같은

답변

4

뭔가 :

library(reshape2) 
library(ggplot2) 

mpwr <- melt(pwr, id.vars=1:3) 

ggplot(mpwr, aes(x=tm, group=1)) + 
    geom_line(aes(y=value, colour=factor(batt_A!=0))) + 
    geom_line(aes(y=value, colour=factor(batt_B!=0))) + 
    facet_grid(~variable) + 
    scale_colour_discrete("Charging") 

enter image description here

+0

매우 가까운 Andrie! 그러나 라인은 반대 색상을 가져야합니다. 따라서 chg가 맞으면 파란색 배터리가 충전되는 동안 빨간색 배터리가 버스에 있음을 나타내는 버스 색상을 뒤집어서 표시해야합니다. 나는 그걸로 놀고, 많이 감사 할 것입니다. – wylbur

관련 문제