У меня есть данные о дождевых осадках, которые собираются непрерывно, из которых я рассчитал дневные итоги. Вот некоторые игрушки данные:данные о ежедневных осадках с использованием geom_step
Date <- c(seq(as.Date("2016-07-01"), by = "1 day", length.out = 10))
rain_mm <- c(3,6,8,12,0,0,34,23,5,1)
rain_data <- data.frame(Date, rain_mm)
Я могу построить эти данные следующим образом:
ggplot(rain_data, aes(Date, rain_mm)) +
geom_bar(stat = "identity") +
scale_x_date(date_labels = "%d")
Что дает следующее:
Это кажется прекрасным. Ясно, сколько осадков произошло в определенный день. Однако можно также интерпретировать, что между полуденным днем и полуднем следующего дня выпало определенное количество дождя, что неверно. Это особенно проблема, если граф объединен с другими графиками связанных непрерывных переменных за тот же период.
Чтобы обойти этот вопрос я мог бы использовать geom_step
следующим образом:
library(ggplot)
ggplot(rain_data, aes(Date, rain_mm)) +
geom_step() +
scale_x_date(date_labels = "%d")
Что дает:
Это лучший способ для отображения данных, и теперь scale_x_date, как представляется, быть непрерывной осью. Тем не менее, было бы неплохо получить область ниже шагов, заполненных, но, похоже, не найти прямой путь к этому.
Q1: Как я могу заполнить под geom_step? Является ли это возможным?
Он также может быть полезно преобразовать Date
в POSIXct
для облегчения идентичных осей х в нескольких сюжетных фигурах, как описано в этом SO question here. я могу сделать это следующим образом:
library(dplyr)
rain_data_POSIX <- rain_data %>% mutate(Date = as.POSIXct(Date))
Date rain_mm
1 2016-07-01 01:00:00 3
2 2016-07-02 01:00:00 6
3 2016-07-03 01:00:00 8
4 2016-07-04 01:00:00 12
5 2016-07-05 01:00:00 0
6 2016-07-06 01:00:00 0
7 2016-07-07 01:00:00 34
8 2016-07-08 01:00:00 23
9 2016-07-09 01:00:00 5
10 2016-07-10 01:00:00 1
Однако, это дает время 01:00 на каждую дату. Я предпочел бы 00:00. Могу ли я изменить это в вызове функции as.POSIXct
, или мне нужно сделать это после использования отдельной функции? Я думаю, что это как-то связано с tz = ""
, но не могу понять.
Как я могу преобразовать из класса Date
в POSIXct
так, что сгенерировано время 00:00?
Благодаря
Первый вопрос является потенциальным дубликат: http://stackoverflow.com/questions/21887088/generate-a-filled-geom-step –
Вопрос второй: попробуйте 'tz =" GMT "' или просто удалите 1 час: 'as.POSIXct (Date) - 3600' .. – timat
@ArtemSokolov Я видел это, но не мог понять ответы. Также хотелось узнать, изменилось ли что-то недавно. Спасибо –