【问题标题】:How to insert a legend in a GGPLOT with multiple time series如何在具有多个时间序列的 GGPLOT 中插入图例
【发布时间】:2020-10-25 11:41:08
【问题描述】:

我正在尝试使用 GGPLOT 在单个图表上绘制多个时间序列。数据集是一个 Data Frame,第一列上的日期为日期格式,名为 Time,其他列上的时间序列名为 V1, V2...等。

我试过了:

gg1=ggplot() + 
  geom_line(data=PCA2, aes(x=Time, y=V2, group=1), lwd=1.1, color="red") +
  geom_line(data=PCA2, aes(x=Time, y=V3, group=1), lwd=1.1, color="blue")+
  scale_color_discrete(name = "PCA series", labels = c("V2", "V3"))
print(gg1)

但我只是得到这个(没有图例):

有人可以帮忙吗?它应该可以工作,并且不会返回任何错误消息...

谢谢!

【问题讨论】:

    标签: r ggplot2 legend


    【解决方案1】:

    你必须重塑你的数据,使其成为“长”数据,即 V2 和 V3 变量中的值组合成一个新变量,另一个变量指示数据的特定行是否引用V2 和 V3。这是使用tidyr 包中的pivot_longer() 实现的。

    这是一个使用 mtcars 变量 dratwt 的示例,其作用方式与 V2 和 V3 作用于您的数据集的方式相同:

    library(tidyverse)
    
    dat <- mtcars %>% 
      select(drat, wt) %>% 
      mutate(x_axis = row_number()) %>% 
      pivot_longer(c(drat, wt), names_to = "variable", values_to = "values")
    
    dat
    #> # A tibble: 64 x 3
    #>    x_axis variable values
    #>     <int> <chr>     <dbl>
    #>  1      1 drat       3.9 
    #>  2      1 wt         2.62
    #>  3      2 drat       3.9 
    #>  4      2 wt         2.88
    #>  5      3 drat       3.85
    #>  6      3 wt         2.32
    #>  7      4 drat       3.08
    #>  8      4 wt         3.22
    #>  9      5 drat       3.15
    #> 10      5 wt         3.44
    #> # ... with 54 more rows
    
    ggplot(dat, aes(x = x_axis, y = values, colour = variable)) + 
      geom_line()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2019-02-03
      • 2016-09-07
      • 1970-01-01
      • 2016-04-03
      相关资源
      最近更新 更多