Я ищу поведение, подобное
scale_x_datetime(labels=date_format("%H:%M", tz="UTC"),
breaks=date_breaks(breaks))
в ggplot с любым типом перерыва: «5 минут», «30 минут», «1 час» и т. Д. для базы Rграфики .
В настоящее время я использую
f <- function(x) as.POSIXct(levels(cut(x, breaks)))
axis(1, at=f(data$Time), labels=format(f(data$Time), "%H:%M"))
, но результат не всегда хорош в зависимости от значений времени данных.Например, иногда с 5-минутными интервалами метки / метки могут быть 9:01, 9:06, 9:11, ... вместо 9:00, 9:05, 9:10, ... какова моя цель ичто я получаю с ggplot.
У кого-нибудь есть хорошее решение для этого?
Пример:
library("ggplot2")
N <- 3e3
time <- seq(as.POSIXct("2018-12-12 8:51:43 UTC", tz="UTC"), length.out=N, by="1 sec")
data <- data.frame(Time=time, Value=rnorm(N))
breaks <- "5 mins"
# base
plot(x=data$Time, y=data$Value, xaxt="n")
f <- function(x) as.POSIXct(levels(cut(x, breaks)))
axis(1, at=f(data$Time), labels=format(f(data$Time), "%H:%M"))
# ggplot
p <- ggplot(data) + geom_point(aes(x=Time, y=Value)) +
scale_x_datetime(labels=date_format("%H:%M", tz="UTC"),
breaks=date_breaks(breaks))
p