В scale_color_gradient2
необходимо добавить две вещи: trans = "date"
* и разумное midpoint
(по умолчанию 0).Я использовал mean
«день».Обратите внимание, что вам нужна числовая версия среднего значения в scale
:
ggplot(myData, aes(x = x1, y = x2, color = day)) +
geom_point() +
scale_color_gradient2(trans = "date", midpoint = as.numeric(mean(myData$day)))
Вы можете изменить разрывы по умолчаниюи ярлыки в легенде.Сначала создайте последовательность разрывов, используя seq
или pretty
:
brk <- seq.Date(min(myData$day), max(myData$day), by = "3 month")
# brk <- pretty(myData$day)
Установите breaks
и labels
с желаемыми format
в вашей шкале:
scale_color_gradient2(trans = "date", midpoint = as.numeric(mean(myData$day)),
breaks = brk,
labels = format(brk, "%Y-%m"))
Редактировать следующий комментарий:
Использовать scale_color_gradient2
с POSIXct
переменная
Добавить trans = "time"
и разумный midpoint
в scale_color_gradient2
.Здесь я использую среднее время.Обратите внимание, что вам нужна числовая версия среднего значения в scale
.
# some data
d <- data.frame(x = 1:10, y = 1, time = as.POSIXct("2019-02-15 12:00") + 1:10)
ggplot(d, aes(x = x, y = y, color = time)) +
geom_point() +
scale_color_gradient2(trans = "time", midpoint = as.numeric(mean(d$time)))
Возможно изменение разрывов и надписей в легенде, например,
brk <- pretty(d$time)
ggplot(d, aes(x = x, y = y, color = time)) +
geom_point() +
scale_color_gradient2(trans = "time", midpoint = as.numeric(mean(d$time)),
breaks = brk, labels = format(brk, format = "%H:%M:%S"))
*В текущей версии ggplot2
(3.1.0) из документов не очевидно, что существуют trans = "date"
и trans = "time"
.Они не упоминаются ни в аргументе trans
в ?scale_color_gradient
и др., Ни в ?continuous_scale
.Тем не менее, я представил проблему, поэтому надеюсь, что документы будут обновлены в следующем выпуске.