Я хотел бы сделать тепловую карту с помощью ggplot. Результат должен быть примерно таким (хотя ось Y необходимо перевернуть):
Ниже представлен подмножество примеров данных. Для фактического приложения фрейм данных имеет более 1000 пользователей, а не только 3. Градиентная заливка должна основываться на ценности пользователей.
Date <- seq(
from = as.POSIXct("2016-01-01 00:00"),
to = as.POSIXct("2016-12-31 23:00"),
by = "hour"
)
user1 <- runif(length(Date), min = 0, max = 10)
user2 <- runif(length(Date), min = 0, max = 10)
user3 <- runif(length(Date), min = 0, max = 10)
example <- data.frame(Date, user1, user2, user3)
example$hour <- format(example$Date, format = "%H:%M")
example$total <- rowSums(example[,c(2:4)])
Я пробовал несколько вещей, используя (fill = total) аргумент в сочетании с geom_tile, geom_raster и stat_de density2d (как это предлагается в аналогичных сообщениях здесь). Пример ниже:
ggplot(plotHuishoudens, aes(Date, hour, fill = Total)) +
geom_tile() +
scale_fill_gradient(low = "blue", high = "red")
Который показывает только отдельные точки, а не показывает ось y как непрерывную переменную (scale_y_continuous также не помогло с этим), хотя переменная является непрерывной?
Как создать тепловую карту, как в приведенном выше примере? И как мне сделать хорошую отсечку по оси Y (например, за 3 часа вместо часа)?