在 R 中,如何在显示日期的 x 轴上添加每月刻度线?

Posted

技术标签:

【中文标题】在 R 中,如何在显示日期的 x 轴上添加每月刻度线?【英文标题】:In R, how do I add monthly tick marks to my x-axis that diplays dates? 【发布时间】:2019-08-31 21:00:14 【问题描述】:

我正在绘制 15 个月的数据,默认情况下 R 只绘制一个 x 轴刻度线“2016”。理想情况下,我会每隔三个打勾,带有诸如“Sept”或“9/1/2015”之类的标签。

到目前为止,我已成功让 R 绘制更多刻度线,但 x 轴值不显示日期。我什至不确定它们是否以三个月的间隔(9 月、12 月等)对应于每个月的第一天,这将是我的偏好。

我已经有了各种各样的东西,包括:

#1
axis(1, at = seq(as.Date("2015-09-11"), as.Date("2016-12-11"), by = "month"))

#2
xaxp=c(as.Date("2015-09-11"), as.Date("2016-12-11"), 15)

#3
axis.Date(1, temperature_subset_maximum_EMI_2015_DATE_CONVERTED, at=seq(as.Date(temperature_subset_maximum_EMI_2015_DATE_CONVERTED), by="months", labels = TRUE, origin="1970-01-01")

#4
z<-cbind("2015-09-01", "2015-10-01", "2015-11-01", "2015-12-01", "2016-01-01", "2016-02-01", "2016-03-01", "2016-04-01", "2016-05-01", "2016-06-01", "2016-07-01", "2016-08-01", "2016-09-01", "2016-10-01", "2016-11-01","2016-12-01"
z<-as.Date(z, format="%Y-%m-%d")
class(z)
# [1] "Date"

#5
axis(side=1, at=c(1:15), labels=c("September","October","November","December","January","February","March","April","May","June","July", "August","September","October","November","December")

#6
axis.POSIXct(1, temperature_subset_maximum_EMI_2015_DATE_CONVERTED, format(seq.Date(as.Date("2015-09-01"), by = "month", len = 5)), labels = TRUE)

到目前为止我最成功的代码是:

plot(x, y, xlim=c(as.Date("2015-09-11"),as.Date("2016-12-01")), ylim=c(0,30),xaxt="n", xlab="Date")
axis(1, at = seq(as.Date("2015-09-11"), as.Date("2016-12-31"), by = 93))

正如我所提到的,我已经能够在 x 轴上显示更多刻度线,但我不知道它们是否表示月份的第一个(以一个月或三个月为间隔),以及它们表示的日期或月份名称不会显示在 x 轴上(而是显示 5 位数字)。目前,当我运行代码时没有错误消息。下面是输出:Graph with 2015-2016 data, but dates won't show up on x-axis

【问题讨论】:

建议阅读:***.com/editing-help#syntax-highlighting,因为更易读的问题(尤其是代码块)可以使其更容易阅读。 另外,粘贴代码时请小心:您缺少引号 ("October),这意味着您的代码永远无法运行;虽然我怀疑您的代码中没有遗漏,但在尝试帮助您并弄清楚发生了什么时会分散注意力。 @r2evans,感谢您的建议。 【参考方案1】:

首先:了解如何提供minimal reproducible example,以帮助我们回答您的问题。

如果我猜对了,您希望轴间断间隔为三个月。如果您的数据框中有日期(没有日期字符串),可以使用scale_x_date-command 来完成。

# monthly interval
scale_x_date(name="Month", date_breaks="1 month", minor_breaks=NULL, date_labels="%b")
# 3-month interval
scale_x_date(name="3 Months", date_breaks="3 month", minor_breaks=NULL, date_labels="%b")

标签%b 表示缩写的月份名称。

要将日期字符串转换为日期,您可以使用lubridate-包中的转换函数,例如ymd(date_string)

【讨论】:

以上是关于在 R 中,如何在显示日期的 x 轴上添加每月刻度线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在绘图图中整齐地或以一定间隔的形式显示 X 轴日期刻度

时间轴上刻度子集的日期格式

pyqtgraph:如何绘制时间序列(x 轴上的日期和时间)?

R:ggplot 在 x 轴上显示所有日期

ggplot2 x轴,每个值R的标签

在 x 轴上的离散组之间添加刻度