Я хочу сделать частотный график дат в кадре данных. График должен быть граненым для года, а даты должны отображаться в формате «01 апреля».
Здесь могут быть данные
x = as.POSIXct(c("2018-04-01", "2018-04-15", "2018-05-01", "2018-05-15",
"2019-04-01", "2019-04-15", "2019-05-01", "2019-05-15"))
df = data.frame(date = sample(x,30, replace = TRUE))
df$year <- format(df$date, "%Y")
Если я создаю граненый график с исходной датой переменная, оба графика не совпадают, потому что весь диапазон дат отображается на оси х. Однако я хочу сопоставить информацию о дне и месяце.
library (ggplot2)
ggplot(df, aes(x=as.Date(date), y = ..count..)) +
geom_bar() +
facet_grid(year ~ ., scales = "free_x") +
scale_x_date(date_breaks = "weeks" , date_labels = "%b-%d") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Теперь я создаю символьный вектор, сохраняя информацию о дне и месяце. Это нормально, но формат даты не очень приятный.
df$date_working <- format(df$date, "%m-%d")
ggplot(df, aes(x=date_working, y = ..count..)) +
geom_bar() +
facet_grid(year ~ ., scales = "free_x") +
labs(title="right order")
Поэтому я создаю другую переменную даты. Однако проблема в том, что эта переменная не поддерживает правильный порядок.
df$date_appreciated <- format(df$date, "%d %b")
ggplot(df, aes(x=date_appreciated, y = ..count..)) +
geom_bar() +
facet_grid(year ~ ., scales = "free_x") +
labs(title="wrong order")
У кого-нибудь есть решение? Мне нужно создать переменную date_appreciated, сохраняя порядок переменной date_working.