每次我将另一个geom_line()添加到主图中时,我想实现不同的颜色渐变,每次都使用'color'作为比例。 这是一个数据框,仅作为示例:
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))
我首先为此绘制:
y1 <- ggplot(df,aes(x=x,y=y1,colour=letter))+geom_line()
y1
然后我想添加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?
谢谢!
答案 0 :(得分: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))
# Option 2
ggplot(df_m,aes(x = x, y = value)) +
geom_line(aes(group = grp,colour = letter,linetype = variable))