如何在 ggplot2 中每小时绘制 Posix 数据?
How can I plot Posix data hourly in ggplot2?
我有一个数据框:
bvar time
0.000000000 2003-03-14 19:00:00
0.200000000 2003-03-14 20:00:00
0.044000000 2003-03-14 21:00:00
此处时间为POSIXct:
str(tsdat$time)
POSIXct[1:193], format: "2003-03-14 19:00:00"
当我绘制它时,我想通过每小时显示来控制 x 轴:
ggplot(ts) +
geom_line(aes(x=time, y=bvar))+
theme(axis.text.x = element_text(angle = 0, hjust = 1))+
scale_x_date(labels=date_format("%Y %H:%M")) +
ylab('BVAR [mm]')
错误
错误:输入无效:date_trans 仅适用于 class 日期的对象
我怎样才能做到每小时一次?在另一个问题中,他们建议使用 as.Date
。但这对我不起作用,因为我的数据只有 2 天。
我认为您可以对 POSIXct 使用 scale_x_datetime
而不是 scale_x_date
。要在 x 轴上按小时休息,还要添加 breaks = "1 hour"
.
library(ggplot2)
library(scales)
ggplot(ts) +
geom_line(aes(x=time, y=bvar))+
theme(axis.text.x = element_text(angle = 0, hjust = 1))+
scale_x_datetime(labels=date_format("%Y %H:%M"), breaks = "1 hour") +
ylab('BVAR [mm]')
输出
数据
ts <- structure(list(bvar = c(0, 0.2, 0.044), time = structure(c(1047690000,
1047693600, 1047697200), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA,
-3L), class = "data.frame")
我有一个数据框:
bvar time
0.000000000 2003-03-14 19:00:00
0.200000000 2003-03-14 20:00:00
0.044000000 2003-03-14 21:00:00
此处时间为POSIXct:
str(tsdat$time)
POSIXct[1:193], format: "2003-03-14 19:00:00"
当我绘制它时,我想通过每小时显示来控制 x 轴:
ggplot(ts) +
geom_line(aes(x=time, y=bvar))+
theme(axis.text.x = element_text(angle = 0, hjust = 1))+
scale_x_date(labels=date_format("%Y %H:%M")) +
ylab('BVAR [mm]')
错误
错误:输入无效:date_trans 仅适用于 class 日期的对象
我怎样才能做到每小时一次?在另一个问题中,他们建议使用 as.Date
。但这对我不起作用,因为我的数据只有 2 天。
我认为您可以对 POSIXct 使用 scale_x_datetime
而不是 scale_x_date
。要在 x 轴上按小时休息,还要添加 breaks = "1 hour"
.
library(ggplot2)
library(scales)
ggplot(ts) +
geom_line(aes(x=time, y=bvar))+
theme(axis.text.x = element_text(angle = 0, hjust = 1))+
scale_x_datetime(labels=date_format("%Y %H:%M"), breaks = "1 hour") +
ylab('BVAR [mm]')
输出
数据
ts <- structure(list(bvar = c(0, 0.2, 0.044), time = structure(c(1047690000,
1047693600, 1047697200), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA,
-3L), class = "data.frame")