Я думаю, то, что вы просите, невозможно при использовании последней (публичной) версии ggplot2.
Гадкий метод, делай на свое усмотрение
Однако, если вы устанавливаете версию для разработки (это привело к конфликту некоторых версий с другими пакетами на моем компьютере, и я думаю, что некоторые вещи еще не полностью работают) с использованием
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
Вы получите еще несколько опций для изменения направляющих, таких как ticks.colour
, frame.colour
или frame.linewidth
, которые позволяют настроить цветовую панель в соответствии с вашими требованиями:
set.seed(6)
dat <- data.frame(x = rnorm(100), y = rnorm(100), z=rnorm(100))
ggplot(dat, aes(x,y,color=z)) + geom_point() +
scale_color_gradientn(colours=c("blue","gray80","red"), limits=c(-3,3),
breaks=c(-3/9*8,-3/9*4,0,3/9*4,3/9*8), labels=c(-2.4,-1.2,0,1.2,2.4), na.value = "green",
guide=guide_colorbar(nbin=10, raster=F, barwidth=20, frame.colour=c("black"),
frame.linewidth=1, ticks.colour="black", direction="horizontal")) +
theme(legend.position = "bottom")
- Используйте
colours = c()
для указания вектора цветов
- Используйте
breaks
вместе с labels
, чтобы вручную назначать метки в правильных положениях вдоль цветовой шкалы. РЕДАКТИРОВАТЬ: Мы можем легко вычислить требуемую позицию вдоль цветовой шкалы, разделив 3 (длина половины вдоль цветовой шкалы) на 9 (есть 9 полукруглых от середины полосы до центра первый блок) и умножить его на количество полупериодов, где мы хотим, чтобы метка появилась.
- Значения за пределами
limits
будут окрашены в соответствии с na.value
- Вы можете дополнительно указать
name = "Your Variable Name"
вместо z
рядом с цветовой шкалой
Я не вижу способа поставить -3 / 3 на самых концах цветовой шкалы, кроме ручного размещения текстового элемента в правильном положении на графике (против чего я настоятельно рекомендую).