我想使用ggplot2在R中绘制图表,但是使用手动定义的图例。对于每个数据集,我想绘制具有相同颜色的线和点。对于不同的数据集,点的颜色和形状必须不同,我希望它在图例中反映出来。我目前所拥有的是以下内容(数据是随机的,但格式与我的相同):
require(ggplot2)
x=runif(10,1,10)
y=runif(10,1,10)
df100final <- data.frame(x,y)
x=runif(10,1,10)
y=runif(10,1,10)
df80final <- data.frame(x,y)
x=runif(10,1,10)
y=runif(10,1,10)
df60final <- data.frame(x,y)
ggplot() +
theme_bw() +
stat_smooth(data=df100final, aes(x=x, y=y), se=FALSE) +
geom_point(data=df100final, aes(x=x, y=y), shape=1) +
stat_smooth(data=df80final, aes(x=x, y=y), se=FALSE) +
geom_point(data=df80final, aes(x=x, y=y), shape=2) +
stat_smooth(data=df60final, aes(x=x, y=y), se=FALSE) +
geom_point(data=df60final, aes(x=x, y=y), shape=3) +
scale_colour_manual(values=c("red","blue","green")) +
theme(legend.position="top")
dev.off()
如您所见,所有线条都具有相同的颜色和点数。只有形状不同,图例才会隐藏。
*编辑* 如果我把:
stat_smooth(data=df100final, aes(x=x, y=y, color="red"), se=FALSE) +
geom_point(data=df100final, aes(x=x, y=y, color="red"), shape=1) +
stat_smooth(data=df80final, aes(x=x, y=y, color="blue"), se=FALSE) +
geom_point(data=df80final, aes(x=x, y=y, color="blue"), shape=2) +
stat_smooth(data=df60final, aes(x=x, y=y, color="green"), se=FALSE) +
geom_point(data=df60final, aes(x=x, y=y, color="green"), shape=3) +
然后我明白了:
但后来我不知道如何编辑标签,图例中的符号都是一样的。
答案 0 :(得分:1)
更多ggplot
- esque方式是在一个数据框中收集数据,创建分组变量,并将颜色映射到分组变量:
df <- rbind(df100final, df80final, df60final)
df$grp <- as.factor(rep(c(100, 80, 60), c(nrow(df100final), nrow(df80final), nrow(df60final))))
ggplot(data = df, aes(x = x, y = y, colour = grp, shape = grp)) +
stat_smooth(se = FALSE) +
geom_point() +
scale_colour_manual(values=c("red", "blue", "green")) +
theme_bw()