我想使用来自包viridis或RColorBrewer的调色板绘制一个图,但是我想设置变量分布中的哪个点应该被认为是颜色梯度中的中间点。
例如,在下面的图中,R取0.5作为颜色范围的中间点。如何设置不同的值,例如0.25?
library(ggplot2)
library(RColorBrewer)
# data
set.seed(1)
df <- expand.grid(x = 0:5, y = 0:5)
df$z <- runif(nrow(df))
# plot
ggplot(df, aes(x, y, fill = z)) + geom_raster() +
scale_fill_distiller( palette="RdBu", guide = "colorbar")

# plot using viridis
library(viridis)
ggplot(df, aes(x, y, fill = z)) + geom_raster() +
scale_fill_viridis()

编辑:我正在寻找一个类似于这里的解决方案,因为我的变量的分布不对称。然而,我想保持整个颜色范围从深蓝色到深红,这似乎是不可能的。
ggplot(df, aes(x, y, fill = z)) + geom_raster() +
scale_fill_gradient2( low = "#2166ac", mid = "#f7f7f7", high = "#b2182b", midpoint = 0.2,
space = "Lab", na.value = "grey50", guide = "colourbar")

发布于 2017-04-19 02:18:42
也许试着设置
space = scale(c(-zlim, 0, zlim))其中zlim是数据的极值。
https://stackoverflow.com/questions/37905981
复制相似问题