在R中的ggplot2中向折线图添加第二个图例

时间:2018-09-07 17:11:04

标签: r ggplot2

我有以下非常简单的数据集,用多线折线图表示。数据集:

foo <- c(105,205,301,489,516,678,755,877,956,1010)
foo1 <- c(100,201,311,419,517,690,710,880,970,1110)
foo2 <- c(105,209,399,499,599,699,799,899,999,1199)
bar <- c(110,120,130,140,150,160,170,180,190,200)

dataset <-data.frame(foo, foo1, foo2, bar)

因此,我正在ggplot2中使用以下函数来创建此数据集的多折线图:

ggplot(m,aes(bar)) + 
  geom_line(aes(y = foo,  colour = "foo"),linetype = 3) +
  geom_line(aes(y = foo1, colour = "foo1"), linetype = 5) +
  geom_line(aes(y = foo2, colour = "foo2"), linetype = 1)

我得到的图表如下:

enter image description here

这绝对好。现在,我想添加另一个图例,该图例应另外显示“实线-foo2,虚线-foo,虚线-foo1”。基本上是我在函数中添加的“线型”。如何在图中添加第二个图例?谢谢。

编辑

我还尝试了

ggplot(m,aes(bar)) + 
  geom_line(aes(y = foo,  colour = "foo",linetype = 3)) +
  geom_line(aes(y = foo1, colour = "foo1", linetype = 5)) +
  geom_line(aes(y = foo2, colour = "foo2", linetype = 1))

但是出现错误“错误:连续变量无法映射到线型”

1 个答案:

答案 0 :(得分:2)

您的数据应首先采用整洁的格式,以便有效利用ggplot

library(ggplot2)
tidyr::gather(dataset, foo, value, -bar) %>% 
        ggplot(aes(bar, value, colour = foo, linetype = foo)) +
        geom_line()

enter image description here