代码之家  ›  专栏  ›  技术社区  ›  Abhiroop Sarkar

向R中ggplot2的折线图添加第二个图例[重复]

  •  0
  • Abhiroop Sarkar  · 技术社区  · 8 年前

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

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

    但是我得到错误“error:一个连续变量不能映射到线型”

    1 回复  |  直到 8 年前
        1
  •  2
  •   mtoto    8 年前

    你的数据首先应该是整齐的格式,以便使用 ggplot

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

    enter image description here

    推荐文章