【问题标题】:Season plot in RR中的季节情节
【发布时间】:2021-03-26 18:25:31
【问题描述】:

我有一个包含日期和平均值的数据集,如下所示:

Dates AVG
2019-04-01 29.2
2019-08-01 29.5
2020-12-01 15.6
2019-02-01 28.7
2020-01-01 16.3
2019-07-01 29.6

日期栏是字符,所以我使用了:

library(lubridate)
my_data$Dates <- ymd(my_data$Dates)

所以,现在我的数据集的 Dates 列具有日期格式,AVG 具有数字格式。 我想做一个散点图,它将分别连接每年的 AVG 的点。所以,我希望 2019 年有一条线,2020 年有一条不同的线,但在同一个情节中。

我在网上看到我可以做类似的事情,如果我使用预测库的 ggseasonplot,但是这个命令期望你有 xts 数据,在我的例子中,只有第一列是日期格式。 我尝试使用以下方法将整个数据集转换为 xts 数据集:

library(xts)
xts_data <- as.xts(my_data)

但我收到以下错误,因为我的数据不是 POSIXlt 格式:

Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

我不知道如何使我的数据以正确的格式使用 ggseasonplot。对此的任何帮助将不胜感激。 此外,任何其他关于制作我想要的情节的其他方式(根本不使用 ggseasonplot)的建议,也将不胜感激。

提前致谢!

【问题讨论】:

    标签: r plot forecast


    【解决方案1】:

    你可能会对ggplot2 感兴趣,一旦你习惯了它的语法和逻辑,它可以很快地给出漂亮的情节。

    要获得ggseasonplotggplot2 的输出,您可以使用lubridate 中的函数(例如month)来获取您的x 坐标,并使用year 来对您每年的观察进行分组。

    library(ggplot2)
    
    ggplot(data = my_data, 
                 mapping = aes(x = month(Dates, label = TRUE), 
                               y = AVG))+
      geom_point()+
      geom_line(aes(group = factor(year(Dates)),
                    color = factor(year(Dates))))+
      scale_color_discrete(name = "Year")+
      xlab(label = "Month")
    

    如果你想显示没有数据的月份:

    ggplot(data = my_data, 
                 mapping = aes(x = month(Dates, label = TRUE), 
                               y = AVG))+
      geom_blank(data=data.frame(),
                 aes(x = month(seq(ymd('2020-01-01'),
                               ymd('2020-12-01'), 
                               by = '1 month'),
                           label = TRUE),
                     y = NULL))+
      geom_point()+
      geom_line(aes(group = factor(year(Dates)),
                    color = factor(year(Dates))))+
      scale_color_discrete(name = "Year")+
      xlab(label = "Month")
    

    原始数据

    my_data <- read.table(header = TRUE,
                 text="Dates    AVG
                 2019-04-01     29.2
                 2019-08-01     29.5
                 2020-12-01     15.6
                 2019-02-01     28.7
                 2020-01-01     16.3
                 2019-07-01     29.6")
    

    【讨论】:

    • 非常感谢。
    猜你喜欢
    • 2020-06-27
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多