Я пытаюсь построить данные временных рядов по неделям и месяцам; в идеале, я думаю, я бы хотел использовать ящики для визуализации ежедневных данных, привязанных к неделе. Хотя я могу изменить метки и линии сетки по оси x, используя scale_x_date
, что не повлияет на точки на графике.ggplot2: график временных рядов данных по месяцам и неделям
Вот демонстрация проблемы и моего текущего (неуклюжего) решения.
library(zoo)
library(ggplot2)
d = as.Date(c(as.Date("2007-06-01"):as.Date("2008-05-31"))) # using zoo to reformat numeric
x = runif(366, min = 0, max = 100)
df = data.frame(d,x)
# PROBLEM #
p = ggplot(df, aes(d, x))
p + geom_point()
p + geom_boxplot() # more or less useless
# CURRENT FIX #
df$Year.Month <- format(df$d, "%Y-%m")
p = ggplot(df, aes(Year.Month, x))
p + geom_point(alpha = 0.75)
p + geom_boxplot() # where I'm trying to get to...
Я уверен, что есть более элегантный способ сделать это изнутри ggplot
. Я прав?
@ Нижеприведенный ответ теней намного опережает. Но есть ли способ сделать это, используя биннинг? Возможно, в какой-то форме stats
?
Вы можете сделать то же самое, что вы делали отдельно в 'ggplot':' p + geom_boxplot (aes (x = format (d, "% Y-% m"))) ' – shadow
Спасибо @shadow - это намного опрятно. – mediaczar
Или, возможно, эта вариация на код тени: 'p + geom_boxplot (aes (format (as.yearmon (d))))' –