#r #ggplot2
#r #ggplot2
Вопрос:
У меня возникли некоторые проблемы с получением оси X для правильного отображения «Дня года», в который поступают данные, но, похоже, вместо этого отображается «время».
Time_Plot <- Glass_DB %>%
mutate(`Date amp; Time In Hour` = yday(`Date amp; Time In Hour`)) %>%
ggplot(aes(x = `Date amp; Time In Hour`))
geom_histogram(bins = 50, colour = "white", fill = "#1380A1")
labs(title = "Glass Category Orders",
subtitle = "Jobs by Day of Year")
scale_x_time() bbc_style()
Time_Plot
Образец набора данных:
structure(c(1554973200, 1554811200, 1554811200, 1554811200, 1554793200,
1554732000), class = c("POSIXct", "POSIXt"), tzone = "UTC")
Date amp; Time In Hour
3/23/2019 11:00
3/7/2019 16:00
2/25/2019 13:00
3/27/2019 13:00
3/28/2019 11:00
3/13/2019 8:00
3/8/2019 9:00
3/20/2019 13:00
3/29/2019 10:00
3/12/2019 15:00
4/1/2019 10:00
Обновить:—————————————————
Удалено scale_x_time()
, чтобы исправить проблему времени. Есть ли способ показать месяцы по оси X, чтобы сделать график более читаемым.
Комментарии:
1. Предпочтительный способ обмена данными с примерами данных
dput
2. Вы не хотите, чтобы ось x была временем, поэтому удалите
scale_x_time()
ее из своего графика. Голосование за закрытие из-за опечатки.3. Спасибо @Gregor, это решило проблему времени. Теперь он показывает «День» по номеру. Есть ли способ изменить это на месяц или более читаемый способ?
4. Я имею в виду, вы используете
yday
which возвращает целое число. Если вам не нужно целое число по оси x, не используйтеyday
. Просто удалите своюmutate
строку и поместите переменную с классом datetime на ось x. Поскольку это дата-время, использованиеscale_x_datetime
является подходящим (datetime
, а не простоtime
) и будет использоваться по умолчанию. Значение по умолчанию, вероятно, будет хорошим, но вы можете настроить его, например, см. Страницу справки?scale_x_datetime
.5. Если вы хотите придерживаться своего первоначального подхода, вы также можете указать свои разрывы вручную и пометить их
scale_x_continuous(breaks=cumsum(c(1,31,28,31,30,31,30,31,31,30,31,30)), labels =c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") )