ggplot2-使用来自不同数据帧的数据构建图例

时间:2019-02-28 13:54:05

标签: r ggplot2 legend

我正在努力为故事情节添加图例。我在同一张图上绘制了来自4个不同数据帧的4个密度图

  • 其中每个都是由一列组成
  • 列名与R对象的名称相同(colnames(df1)='df1')
  • 行数各不相同,但从df到另一行,行名不能唯一

代码是:

ggplot() +
    geom_density(data=df1, aes(x=df1), color='black', fill='black', alpha = 0.2) +
    geom_density(data=df2, aes(x=df2), color='darkred', fill='darkred',alpha = 0.2) +
    geom_density(data=df3, aes(x=df3), color='darkblue', fill='darkblue',alpha = 0.2) +
    geom_density(data=df4, aes(x=df4), color='darkgreen', fill='darkgreen',alpha = 0.2) +
    xlim(0.5,1) +
    ggtitle('Density plots') +
    xlab('Indices') +
    ylab('Density')

添加图例的通常方法是合并数据框,按组绘制每个密度,按组绘制颜色;但是在那种情况下,我该如何构建图例说明哪个曲线与哪个数据框相对应?

谢谢。

1 个答案:

答案 0 :(得分:0)

获取图例的一种方法是添加颜色并填充美学映射中的名称,并为其指定要显示在图例中的名称,然后使用scale_...._manual)()为两个标尺赋予相同的名称和值。 ,就像这样:

library(ggplot2)
# dummy data
df1 <- data_frame(df1 = runif(100))
df2 <- data_frame(df2 = runif(100))
df3 <- data_frame(df3 = runif(100))
df4 <- data_frame(df4 = runif(100))

ggplot() +
  geom_density(data=df1, aes(x=df1, color='df1', fill='df1'), alpha = 0.2) +
  geom_density(data=df2, aes(x=df2, color='df2', fill='df2'), alpha = 0.2) +
  geom_density(data=df3, aes(x=df3, color='df3', fill='df3'), alpha = 0.2) +
  geom_density(data=df4, aes(x=df4, color='df4', fill='df4'), alpha = 0.2) +
  scale_color_manual(name = 'Title', values=c('black', 'darkred', 'darkblue', 'darkgreen')) + 
  scale_fill_manual(name = 'Title', values=c('black', 'darkred', 'darkblue', 'darkgreen')) +
  xlim(0.5,1) +
  ggtitle('Density plots') +
  xlab('Indices') +
  ylab('Density')