У меня есть фрейм данных, подобный следующему:
kWh Equipment date
1 1.53 aquecedor01 2015-01-01 00:00:00
2 5.29 aquecedor01 2015-01-01 01:00:00
3 5.73 aquecedor01 2015-01-01 02:00:00
, но когда я агрегирую данные по переменной Equipment, чтобы найти максимальное значение из кВтч, столбец даты неверно форматируется примерно так:
Equipment kWh date
1 aquecedor01 6.5 1433023200
2 aquecedor02 6.5 1433023200
3 exaustor 6.5 1433023200
Я боролся с этим некоторое время, и большинство вещей, которые я нахожу вокруг, работают только с датами или часами независимо друг от друга. В моем случае, поскольку я выполняю сюжет в приложении Shiny, мне было бы проще сделать все сразу.
Я хотел бы отобразить на линейчатой диаграмме все максимальные значения для каждого оборудования и написать на линейке, которая была временем для этого значения. Это мой код для этого:
ggplotly(ggplot(data=aggregate(
. ~ Equipment,
data = dt.hourly[(as.character(input$dateRange[1]) <= dt.hourly$date) &
(as.character(input$dateRange[2]) > dt.hourly$date) &
(dt.hourly$Equipment %in% input$equipments),], max),
aes(x=Equipment, y=kWh)) +
geom_bar(position = 'dodge', stat='identity') +
geom_text(aes(label=date),
position = position_stack(vjust = 0.5),
angle = 90,
size=2) +
xlab("Date") +
ylab("Consumption (kWh)") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
))
Помимо этого angle=90
игнорируется, и я не могу понять, почему.
Вот что я получаю:
Спасибо заранее.
В качестве воспроизводимого примера:
library(plotly)
set.seed(1)
dt <- data.frame(
kWh = sample(10:100, 10, replace = TRUE)/100,
Equipment = sample(c("heater", "furnace", "AC"), 10, replace = TRUE),
date = sample(as.POSIXct(c("2015-01-14 17:00:00", "2015-01-21 20:00:00", "2015-01-21 22:00:00", "2015-02-21 20:00:00", "2015-01-22 14:00:00", "2015-02-14 17:00:00", "2015-02-21 20:00:00", "2015-02-21 22:00:00", "2015-03-21 20:00:00", "2015-03-22 14:00:00" )), 10, replace = TRUE)
)
А для построения:
ggplotly(ggplot(data=aggregate(
. ~ Equipment,
data = dt[("2015-01-12" <= dt$date) &
("2015-02-22" > dt$date) &
(dt$Equipment %in% c("AC", "furnace")),], max),
aes(x=Equipment, y=kWh)) +
geom_bar(position = 'dodge', stat='identity') +
geom_text(aes(label=date),
position = position_stack(vjust = 0.5),
angle = 90,
size=2) +
xlab("Date") +
ylab("Consumption (kWh)") +
theme(axis.text.x = element_text(angle = 90, hjust = 1)))
и вывод dput
:
structure(list(kWh = c(0.34, 0.43, 0.62, 0.92, 0.28, 0.91, 0.95,
0.7, 0.67, 0.15), Equipment = structure(c(3L, 3L, 1L, 2L, 1L,
2L, 1L, 1L, 2L, 1L), .Label = c("AC", "furnace", "heater"), class = "factor"),
date = structure(c(1427032800, 1421877600, 1424548800, 1421870400,
1421877600, 1424548800, 1421254800, 1424548800, 1426968000,
1424548800), class = c("POSIXct", "POSIXt"), tzone = "")), class = "data.frame", row.names = c(NA,
-10L))