[英]Manual legend (scale_colour_manual) missing in plot with several aesthetics
我刚刚使用ggplot从不同的数据帧绘制数据。 不知何故,我无法显示(手动)图例。
下面的代码示例很好地总结了此问题。 怎么了
library(plyr)
library(ggplot2)
df <- data.frame(gp=factor(rep(letters[1:3], each=10)), y=rnorm(30))
ds <- ddply(df, .(gp), summarise, mean=mean(y), sd=sd(y))
ggplot() +
geom_point(data=df, aes(colour='one', x=gp, y=y), colour='red') +
geom_point(data=ds, aes(colour='two', x=gp, y=mean), colour='green') +
geom_errorbar(data=ds, aes(colour='three', x=gp, y=mean, ymin=mean-sd, ymax=mean+sd), colour='blue') +
scale_color_manual('', values=c('red', 'green', 'blue'))
请不要建议我将数据合并到一个数据框中,然后再按新变量进行分组。 我知道这可能是一个选择,但实际上由于某些原因,在我的特定情况下是不可能的。
你快到了 需要将aes内的color变量映射为实际颜色,而aes外的颜色则不必要。
ggplot() +
geom_point(data=df, aes(colour='one', x=gp, y=y)) +
geom_point(data=ds, aes(colour='two', x=gp, y=mean))+
geom_errorbar(data=ds, aes(colour='three', x=gp, y=mean, ymin=mean-sd, ymax=mean+sd))+
scale_color_manual(values=c(one='red', two='green', three='blue'),
breaks=c("one","two","three"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.