【问题标题】:Temporal time series in ggplot with multiple variables [duplicate]ggplot中具有多个变量的时间序列[重复]
【发布时间】:2020-08-04 08:36:46
【问题描述】:

我在 R 中有一个数据框:

datalu
V1 Lon  Lat           Year     UB    CA      PR        FO  NA
1   13258323  61 29.5 1750     0    0.009   0.087      0   0.982
2   13258324  61 29.5 1751     0    0.009   0.088      0   0.982
3   13258325  61 29.5 1752     0    0.009   0.078      0   0.571
4   13258326  61 29.5 1753     0    0.009   0.068      0   0.471

我想在一个显示不同颜色的图表中绘制 ggplot 中 CA、PR、NA 变量的时间序列(以线的形式)的时间图。实际上我有很多年(100 多年),但只是作为我提到的数据框的一个例子,我只提到了四年。在 R 的 ggplot 中如何实现?

【问题讨论】:

    标签: r ggplot2 raster


    【解决方案1】:

    你有两个选择。

    首先:您的数据。

    datalu <- tibble::tribble(
             ~V1, ~Lon, ~Lat, ~Year, ~UB,   ~CA,   ~PR, ~FO, ~`NA`,
        13258323,   61, 29.5,  1750,   0, 0.009, 0.087,   0, 0.982,
        13258324,   61, 29.5,  1751,   0, 0.009, 0.088,   0, 0.982,
        13258325,   61, 29.5,  1752,   0, 0.009, 0.078,   0, 0.571,
        13258326,   61, 29.5,  1753,   0, 0.009, 0.068,   0, 0.471
    )
    
    

    在此图中,您可以手动选择每个变量,并使用scale_colour_manual 选择您想要的颜色。

    library(ggplot2)
    
    ggplot(datalu, aes(x = Year)) +
        geom_line(aes(y = CA  , colour = "CA"), size = 1) +
        geom_line(aes(y = PR  , colour = "PR"), size = 1) +
        geom_line(aes(y = `NA`, colour = "NA"), size = 1) +
        scale_color_manual(values = scales::hue_pal()(3)) +
        theme_light() +
        labs(y = "Value",
             colour = "Series")
    
    
    

    有了这个,您可以使用一个小技巧:您使用gather 收集长格式的数据,它会自动为您选择颜色。

    我选择了这些列,因为我不确定您的完整数据是什么样的。

    library(ggplot2)
    library(dplyr)
    library(tidyr)
    
    datalu %>%
        select(CA, PR, `NA`, Year) %>% 
        gather(series, value, -Year) %>% 
        ggplot(aes(x = Year, y = value, colour = series)) +
        geom_line(size = 1) +
        theme_light()
        
    

    【讨论】:

      【解决方案2】:

      最好使用pivot_longer 重塑您的数据:

      library(ggplot2)
      library(dplyr)
      
      datalu %>% 
        tidyr::pivot_longer(cols = c("UB", "CA", "PR", "FO", "NA.")) %>%
        ggplot(aes(x = Year, y = value, color = name)) + geom_line()
      

      reprex package (v0.3.0) 于 2020 年 8 月 4 日创建

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-06
        • 2022-10-24
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        相关资源
        最近更新 更多