Как я могу отображать данные Posix ежечасно в ggplot2? - PullRequest
1 голос
/ 24 апреля 2020

У меня есть фрейм данных:

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 работает только с объектами класса Date

Как я могу сделать это ежечасно? В другом вопросе они предложили использовать as.Date. Но это не работает для меня, так как мои данные только за 2 дня.

1 Ответ

1 голос
/ 24 апреля 2020

Я думаю, вы можете использовать scale_x_datetime для POSIXct вместо 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]')

Выход

plot using scale_x_datetime

Данные

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...