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

在R中ggplot2的折线图中添加第二个图例,r,ggplot2,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) datas

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

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)
我得到的图表如下所示:

这是绝对好的。现在,我想添加另一个图例,该图例应该额外显示“solidline-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))

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

为了有效地使用
ggplot
,您的数据首先应该是整齐的格式:

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

为了有效利用
ggplot
,您的数据首先应该是整齐的格式:

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

Move
linetype
inside
aes
就像您对
color
@所做的一样,我尝试了一下,得到了错误“error:A continuous variable cannot mapping to linetype”您包括了什么<代码>线型='foo'?理想情况下,您希望将数据转换为类似于@Tung Ah!的长格式!刚刚看到你的评论尝试了
linetype='foo'
,效果很好!ThanksMove
linetype
inside
aes
就像您使用
color
@一样,我尝试了一下,得到了错误“error:A continuous variable cannot mapping to linetype”您包括了什么<代码>线型='foo'?理想情况下,您希望将数据转换为类似于@Tung Ah!的长格式!刚刚看到你的评论尝试了
linetype='foo'
,效果很好!谢谢你的回答。除了需要我另外安装包“magrittr”以使用操作符“%>%”之外,它工作得非常好。也许答案应该提到这一点。再次感谢。是否可以将图例的标题从“foo”更改为一些自定义标题?谢谢您的回答。除了需要我另外安装包“magrittr”以使用操作符“%>%”之外,它工作得非常好。也许答案应该提到这一点。再次感谢。是否可以将图例的标题从“foo”更改为自定义标题?