R 在ggplot2中将日期时间格式的记号标签编辑为短版本
是否有人知道某个函数/程序包仅在axis中显示一天中的第一个小时时显示日期?i、 例如,我只想显示23:30和00:00的日期,因为它们分别是7月21日和7月22日的第一个日期 我使用了ggplot并将scale_x_datetime设置如下:R 在ggplot2中将日期时间格式的记号标签编辑为短版本,r,ggplot2,datetime-format,R,Ggplot2,Datetime Format,是否有人知道某个函数/程序包仅在axis中显示一天中的第一个小时时显示日期?i、 例如,我只想显示23:30和00:00的日期,因为它们分别是7月21日和7月22日的第一个日期 我使用了ggplot并将scale_x_datetime设置如下: scale_x_datetime(limits = c(ymd_hm('2020-07-21 23:24', tz = tz_EDT),ymd_hm('2020-07-22 00:25',tz = tz_EDT)), date_breaks = '1
scale_x_datetime(limits = c(ymd_hm('2020-07-21 23:24',
tz = tz_EDT),ymd_hm('2020-07-22 00:25',tz = tz_EDT)),
date_breaks = '10 mins',date_labels = '%H:%M\n%b/%d',expand = c(0, 0))
scale_x_datetime(limits = c(ymd_hm('2020-07-21 23:25',
tz = tz_EDT),ymd_hm('2020-07-22 00:25',tz = tz_EDT)),
date_breaks = '10 mins',labels = label_date_short(),expand = c(0, 0))
我尝试了scales
软件包中的label\u date\u short
,但我个人不喜欢这种格式。我只想分开时间和日期(日/月/年或年/月/日),而不是时间、日、月和去年
对于上图,代码如下所示:
scale_x_datetime(limits = c(ymd_hm('2020-07-21 23:24',
tz = tz_EDT),ymd_hm('2020-07-22 00:25',tz = tz_EDT)),
date_breaks = '10 mins',date_labels = '%H:%M\n%b/%d',expand = c(0, 0))
scale_x_datetime(limits = c(ymd_hm('2020-07-21 23:25',
tz = tz_EDT),ymd_hm('2020-07-22 00:25',tz = tz_EDT)),
date_breaks = '10 mins',labels = label_date_short(),expand = c(0, 0))
我的理解是R不能很好地处理时间数据,它更喜欢日期时间数据。这是有意义的,因为每天重复相同的时间,而日期时间不应该重复,因此您不太可能重复时间数据点 无论如何,继续您的示例,您可以手动指定要在x轴上显示的2个值。您需要以日期时间格式指定它们,然后指定希望它们显示的格式(即YYMMDD、YYMMDD-HHMM、HHMM等) 如果您不熟悉签出
?lubridate
,我建议使用lubridate
包处理日期和(日期)时间,尤其是我们在本例中使用的功能:?ymd_hm
。基本上,ymd_hm()
将拼写为“年-月-日-小时-分钟”的字符转换为datetime对象。datetime对象打印为'year-month-day-hour:min:sec',即使我们没有指定任何'seconds'数据,也不用担心,因为默认情况下秒数为零(即分钟顶部)
我制作了一些示例数据,包括您的日期时间范围:
library(tidyverse) # for the tibble() and pipes (%>%) functions
library(lubridate)
tibble(
datetime = seq(ymd_hm('2020-07-21 23:24'), ymd_hm('2020-07-22 00:25'), 'min'), # sample datetime sequence, with 1 min intervals
value = rnorm(62, 1, 1) # random data
) %>%
{. ->> my_data}
然后,当您构建ggplot
时,您将使用scale\u x\u datetime
并手动指定断点。中断
需要采用日期时间格式,因此我们再次使用ymd_hm()
。我们在这里指定完整的日期时间。然后,可以使用date\u标签
指定要在中显示的轴标签的格式。这就是我们告诉scale_x_datetime
使用%H:%M
表示法仅显示小时和分钟的地方(有关日期和时间格式的列表,请参阅)
注意:记号标记的位置将始终为日期时间格式,但标记方式可以更改。例如,可以将时间点重新标记为字符向量,例如:
my_data %>%
ggplot(aes(datetime, value))+
geom_line()+
scale_x_datetime(
breaks = c(ymd_hm(c('2020-07-21 23:30', '2020-07-22 00:00'))),
# date_labels = '%H:%M'
date_labels = c('t1', 't2')
)