ggplot2 - создайте легенду с данными, поступающими из разных фреймов данных - PullRequest
0 голосов
/ 28 февраля 2019

Я борюсь с тем, как добавить легенду к своему сюжету.Я рисую на том же рисунке 4 графиков плотности, взятых из 4 разных фреймов данных

  • , каждый из которых состоит из одного столбца
  • Имя столбца совпадает с именемR object (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 голосов
/ 28 февраля 2019

Один из способов получить легенду состоит в том, чтобы добавить цвет и заполнить внутри отображения эстетики и дать им имя, которое вы хотите отобразить в легенде, а затем присвоить обеим шкалам одинаковое имя и значения с 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')
...