如何将图例添加到ggplot多个geom_bar

时间:2017-11-01 02:52:09

标签: r ggplot2

我有这样的代码

# two data frames
sf =  data.frame(days = c('05-06', '05,08'), Frequency = c(0, 2))
normal = data.frame(days = c('05-06', '05,07'), Frequency = c(1, 3))

# plot
ggplot() + 
  geom_bar(aes(y = Frequency, x = days), data = normal, 
           stat="identity", colour = 'black') +
  geom_bar(aes(y = Frequency, x = days), data = sf, 
           stat="identity", colour = 'red')

我想用红色和黑色添加图例,我尝试了one这是我问题最相关的解决方案,但它只显示了第一个条形图的图例。我怎么能有黑色和红色的条形图传奇?

注意:它不是一个数据帧,它们是两个独立的数据帧,具有不同的行数,因此我无法将它们合并在一起。所以我绘制了两个条形图。上面的代码填充了图表,我想要的是添加一个图例,显示第一个条形图是黑色,第二个是红色。

1 个答案:

答案 0 :(得分:2)

与许多ggplot问题一样,您面临的问题源于数据格式不正确。您应该拥有一个数据框,其中包含daysFrequencygroup列。

在ggplot的美学组中设置颜色,然后指定手动色标以设置颜色和黑色。

library(ggplot2)

df =  data.frame(days = c('05-06', '05,08', '05-06', '05,07'),
                 Frequency = c(0, 2, 1, 3),
                 group = c("sf", "sf", "normal", "normal"))


# plot
ggplot(df, aes(y = Frequency, x = days, fill = group)) + 
  geom_bar(stat="identity") +
  scale_fill_manual(values = c("red", "black"))

enter image description here

  

我鼓励阅读ggplot参考指南的基础知识,以便更多地了解如何使用数据:http://ggplot2.tidyverse.org/reference/。此外,ggplot备忘单是一个有用的参考:https://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf