2012-06-25 3 views
2

geom_line()을 주 플롯에 추가 할 때마다 매번 '색상'을 눈금으로 추가 할 때마다 다른 색상 그라디언트를 얻고 싶습니다. 여기서 단지 예로서 데이터 프레임이다ggplot2의 낮은 레벨 플롯을 사용한 여러 색상 스케일링

df <- data.frame("letter"=c(rep("a",5),rep("b",5)),"x"=rep(seq(1,5),2),"y1"=c(seq(6,10),seq(6,10)/2),"y2"=c(seq(1,5),seq(1,5)/2),"y3"=c(seq(3,7),seq(3,7)/2)) 

가되는 I 제 플롯 :

y1 <- ggplot(df,aes(x=x,y=y1,colour=letter))+geom_line() 
y1 
그때 다음 I 할 수있는 Y1 및 Y2를 추가하고자

:

y2 <- geom_line(data=df,aes(x=x,y=y2,colour=letter)) 
y3 <- geom_line(data=df,aes(x=x,y=y3,colour=letter)) 
y1+y2+y3 

하지만 색상 그라디언트 (또는 색조)가 y1, y2 및 y3과 다를 수 있습니다.

geom_line에 scale_colour_hue()와 같은 것을 할당 할 수 있습니까, 아니면 ggplot에서만 가능합니까?

감사합니다. 제가 위에서 설명한 것처럼

+2

을, 아니, 당신은 할 수 없습니다. 데이터를 녹일 수 있고 (a) 6 개의 모든 선을 구별하는 단일 변수에 색을 매핑하거나, (b) 선의 세 쌍을 구별하기 위해 선 종류 또는 패싯을 사용할 수 있습니다. – joran

+0

고마워, 조란, 훌륭해! – user1480445

+0

@joran, 답장으로 제출하지 않으려면 (담당자가 필요하지 않음)? –

답변

2

, 여기에 몇 가지 옵션은 다음과 같습니다 한마디로

df <- data.frame("letter"=c(rep("a",5),rep("b",5)), 
       "x"=rep(seq(1,5),2), 
       "y1"=c(seq(6,10),seq(6,10)/2), 
       "y2"=c(seq(1,5),seq(1,5)/2), 
       "y3"=c(seq(3,7),seq(3,7)/2)) 

# melt your data and create a grouping variable 
library(plyr)      
df_m <- melt(df,id.vars = 1:2) 
df_m$grp <- with(df_m,interaction(letter,variable)) 


# Option 1 
ggplot(df_m,aes(x = x, y = value)) + 
    facet_wrap(~variable) + 
    geom_line(aes(group = letter,colour = letter)) 

enter image description here

# Option 2  
ggplot(df_m,aes(x = x, y = value)) + 
    geom_line(aes(group = grp,colour = letter,linetype = variable)) 

enter image description here

관련 문제