【问题标题】:Plot with dates as X axis in R在 R 中以日期为 X 轴绘图
【发布时间】:2011-05-17 16:10:16
【问题描述】:

我以电子方式维护我的日记,并试图了解过去几个月我在日记写作方面的一致性。我有以下数据文件,它显示了我在前 30 天期间记录了多少日记条目 (Entry Count) 和单词 (Word Count)。

Date    Entry Count Word Count
2010-08-25  22  4205
2010-08-26  21  4012
2010-08-27  20  3865
2010-08-28  20  4062
2010-08-29  19  3938
2010-08-30  18  3759
2010-08-31  17  3564
2010-09-01  17  3564
2010-09-02  16  3444
2010-09-03  17  3647
2010-09-04  17  3617
2010-09-05  16  3390
2010-09-06  15  3251
2010-09-07  15  3186
2010-09-08  15  3186
2010-09-09  16  3414
2010-09-10  15  3228
2010-09-11  14  3006
2010-09-12  13  2769
2010-09-13  13  2781
2010-09-14  12  2637
2010-09-15  13  2774
2010-09-16  13  2808
2010-09-17  12  2732
2010-09-18  12  2664
2010-09-19  13  2931
2010-09-20  13  2751
2010-09-21  13  2710
2010-09-22  14  2950
2010-09-23  14  2834
2010-09-24  14  2834
2010-09-25  14  2834
2010-09-26  14  2834
2010-09-27  14  2834
2010-09-28  14  2543
2010-09-29  14  2543
2010-09-30  15  2884
2010-10-01  16  3105
2010-10-02  16  3105
2010-10-03  16  3105
2010-10-04  15  2902
2010-10-05  14  2805
2010-10-06  14  2805
2010-10-07  14  2805
2010-10-08  14  2812
2010-10-09  15  2895
2010-10-10  14  2667
2010-10-11  15  2876
2010-10-12  16  2938
2010-10-13  17  3112
2010-10-14  16  2894
2010-10-15  16  2894
2010-10-16  16  2923
2010-10-17  15  2722
2010-10-18  15  2722
2010-10-19  14  2544
2010-10-20  13  2277
2010-10-21  13  2329
2010-10-22  12  2132
2010-10-23  11  1892
2010-10-24  10  1764
2010-10-25  10  1764
2010-10-26  10  1764
2010-10-27  10  1764
2010-10-28  10  1764
2010-10-29  9   1670
2010-10-30  10  1969
2010-10-31  10  1709
2010-11-01  10  1624
2010-11-02  11  1677
2010-11-03  11  1677
2010-11-04  11  1677
2010-11-05  11  1677
2010-11-06  12  1786
2010-11-07  12  1786
2010-11-08  11  1529
2010-11-09  10  1446
2010-11-10  11  1682
2010-11-11  11  1540
2010-11-12  11  1673
2010-11-13  11  1765
2010-11-14  12  1924
2010-11-15  13  2276
2010-11-16  12  2110
2010-11-17  13  2524
2010-11-18  14  2615
2010-11-19  14  2615
2010-11-20  15  2706
2010-11-21  14  2549
2010-11-22  15  2647
2010-11-23  16  2874
2010-11-24  16  2874
2010-11-25  16  2874
2010-11-26  17  3249
2010-11-27  18  3421
2010-11-28  18  3421
2010-11-29  19  3647

我正在尝试用 R 绘制这些数据,以获得我的日记写作一致性的图形表示。我使用以下命令将其加载到 R 中。

d <- read.table("journal.txt", header=T, sep="\t")

然后我可以使用以下命令绘制数据。

plot(seq(from=1, to=length(d$Entry.Count), by=1), d$Entry.Count, type="o", ylim=c(0, max(d$Entry.Count)))

但是,在此图中,X 轴只是一个数字,而不是日期。我尝试调整命令以像这样在 X 轴上显示日期。

plot(d$Date, d$Entry.Count, type="o", ylim=c(0, max(d$Entry.Count)))

然而,不仅情节看起来很奇怪,而且 X 轴上的标签也不是很有帮助。绘制这些数据的最佳方法是什么,以便我可以清楚地将日期与绘制曲线上的点关联起来?

【问题讨论】:

    标签: r visualization plot


    【解决方案1】:

    您可以使用zoo?plot.zoo 有几个如何创建自定义轴标签的示例。

    z <- zoo(d[,-1],as.Date(d[,1]))
    plot(z)
    
    # Example of custom axis labels
    plot(z$Entry.Count, screen = 1, col = 1:2, xaxt = "n")
    ix <- seq(1, length(time(z)), 3)
    axis(1, at = time(z)[ix], labels = format(time(z)[ix],"%b-%d"), cex.axis = 0.7)
    

    【讨论】:

    • 对象tt从何而来?
    • @Daniel 哎呀,我复制/粘贴不够仔细:tt &lt;- time(z)
    • 比其他答案更复杂一些,但这在调整它以使其看起来像我想要的那样时可能很有用。谢谢!
    【解决方案2】:

    根据您的代码,日期只是字符。

    尝试将它们转换为日期:

    plot(as.Date(d$Date), d$Entry.Count)
    

    在您的情况下非常简单,因为“%Y-%m-%d”格式是 as.Date 的默认格式。有关更多通用选项,请参见 strptime。

    【讨论】:

    • 非常简单而且很有帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2020-11-17
    • 2018-08-31
    • 2016-12-14
    相关资源
    最近更新 更多