首页 > 解决方案 > 将图例添加到 ggplot 对象

问题描述

我正在尝试通过 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")

其输出如下图

一些乐队的情节

我想稍后用这个对象绘制一些点,所以我拒绝使用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"))

但是通过这段代码,我只是得到了没有颜色的相同情节。

标签: rggplot2

解决方案


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

# 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()

在此处输入图像描述


推荐阅读