将图例添加到ggplot对象

时间:2018-06-21 02:06:44

标签: r ggplot2

我试图通过R中的下一个代码向图添加图例。

limits<-ggplot(bands3, aes(x=H,y=C_min))+geom_line(color="red1")+
  geom_line(data=bands3, aes(x=H,y=C_max), color="red1")+
  geom_line(data=bands4[-1000,], aes(x=H,y=C_min),color="green1", size=0.5)+ 
  geom_line(data=bands4[-1000,], aes(x=H,y=C_max),color="green1", size=0.5)+
  geom_line(data=bands5, aes(x=H,y=C_min),color="purple1")+ 
  geom_line(data=bands5, aes(x=H,y=C_max),color="purple1")+
  geom_line(data=bands6[-1000,], aes(x=H,y=C_min),color="orange1")+ 
  geom_line(data=bands6[-1000,], aes(x=H,y=C_max),color="orange1")+
  geom_line(data=bands7[-1000,], aes(x=H,y=C_min),color="blue1")+ 
  geom_line(data=bands7[-1000,], aes(x=H,y=C_max),color="blue1")+
  scale_colour_manual(name="D",values=c(red1="#ED0603", green1="#0C9F10", 
purple1="#8A08E0",orange1="#ED6904",blue1="#210CDE"))+labs(x="X", y="Y")

其输出如下图

Plot of some bands

我想稍后使用此对象绘制一些点,因此我拒绝使用grind.arrange添加图例,并且我尝试了在这里找到的所有可能的解决方案,但没有成功。我想知道是否有人可以帮助我解决此问题,尽管不幸的是我无法共享数据。非常感谢。

编辑:我也尝试仅使用一个数据框来完成此操作。这是我使用的代码

bands<-rbind(cbind("D"=rep(3,1000), bands3),cbind("D"=rep(4,999), 
bands4[-1000,]),cbind("D"=rep(5,1000),bands5),cbind("D"=rep(6,999), 
bands6[-1000,]), cbind("D"=rep(7,999),bands7[-1000,]))

bands$D<-as.factor(bands$D)

limits<-ggplot(bands, aes(x=H,y=C_min, group=D))+geom_line()+
geom_line(data=bands, aes(x=H,y=C_max,group=D))+ 
scale_fill_manual(values=c("#ED0603","#0C9F10",
                          "#8A08E0","#ED6904","#210CDE"))

但是通过这段代码,我得到的是相同的图而没有颜色。

1 个答案:

答案 0 :(得分:1)

为了说明我在上面的评论,这是一个最小的示例:

# Generate some data
df <- data.frame(
    x = 1:20,
    y1 = (1:20) * 0.5,
    y2 = (1:20) * 1,
    y3 = (1:20) * 1.5);

library(tidyverse);
df %>%
    gather(key, value, -x) %>%
    ggplot(aes(x, value, colour = key)) + 
    geom_line()

enter image description here