传奇没有在R中显示

时间:2014-05-12 10:29:27

标签: r charts plot ggplot2

我想使用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()

plot

如您所见,所有线条都具有相同的颜色和点数。只有形状不同,图例才会隐藏。

*编辑* 如果我把:

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) +

然后我明白了: enter image description here

但后来我不知道如何编辑标签,图例中的符号都是一样的。

1 个答案:

答案 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()