【问题标题】:Time series plot in R skips dates on x-axisR中的时间序列图跳过x轴上的日期
【发布时间】:2021-08-21 04:23:42
【问题描述】:

我正在尝试使用以下数据在 R 中创建一个简单的时间序列图(它是 tbl 格式):

    Date          sales
  <date>        <dbl>
1 2010-02-05 1105572.
2 2010-09-03 1048761.
3 2010-11-19 1002791.
4 2010-12-24 1798476.
5 2011-02-04 1025625.
6 2011-11-18 1031977.

当我使用以下命令时:plot(by_date$Date, by_date$sales, type = 'l'),生成的图表只是跳过了我希望它显示的各个日期,并且只在 x 轴上显示年份,就像这样(请忽略轴标签现在):

我使用class(by_date$Date) 检查了日期列的格式,它确实显示为“日期”。我还检查了这里的其他线程,最接近回答我的查询的是here。尝试了这种方法,但对我不起作用,而在 ggplot 中绘图或将数据转换为数据框也不起作用。请帮忙,谢谢。

【问题讨论】:

    标签: r plot time-series


    【解决方案1】:

    ggplot 这应该可以工作 -

    library(ggplot2)
    ggplot(by_date, aes(Date, sales)) + geom_line()
    

    您可以根据需要使用scale_x_date 来格式化您的 x 轴。

    【讨论】:

    • 我在查询中确实提到我使用了ggplot。但可以肯定的是,我再次尝试并没有工作,不幸的是,即使在使用scale_x_date(我也是第一次这样做)之后。
    • @SukantoMukherjee 不起作用是什么意思?你得到什么输出?你能指望什么?您与scale_x_date 一起使用的确切代码是什么?
    • 我是认真的。我只是希望日期显示在 x 轴上,因为它们在列中,但它们没有。另外,当您每次回复时,请尽量不要在这里粗鲁。我花了两天的大部分时间来尝试解决这个问题,并尝试遵循此处的指导方针,因此我们将不胜感激。这是代码:ggplot(by_date, aes(Date, sales)) + scale_x_date(date_labels = "%d/%m/%y") + geom_line()。这仅将日期显示为每个月的第一天,例如 '01/01/10' 等等。
    • 对不起,如果这听起来很粗鲁。我想在这里理解你的期望。您可以将scale_x_date 用作scale_x_date(breaks = '1 month')。您可以使用 6 个月、1 年或您想要的任何其他休息时间来代替 1 个月。要在 x 轴上显示数据中的所有日期,请将日期更改为因子。 by_date$Date &lt;- factor(by_date$Date) 并使用 ggplot(by_date, aes(Date, sales, group = 1)) + geom_line()。
    • 谢谢,看起来这终于让我得到了想要的输出。感谢您的帮助。
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2022-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多