【发布时间】:2017-07-10 11:43:18
【问题描述】:
我想要图片中的色标:
所以从上到下我们有:
非常亮的黄色(白色)、橙色、红色、黑色、蓝色、浅蓝色到非常亮的蓝色(白色)
我希望值 0 始终显示为“黑色”。最小(负)值应该是“极亮的蓝色”。最大的值(正)应该是“极亮的黄色”。
请注意,最小值和最大值与原点 0 的距离并不相等。
这就是我所在的地方:
library(ggplot2)
df <- data.frame(xDim = c(0, 1, 2, 0, 1, 2, 0, 1, 2), yDim = c(2, 2, 2, 1, 1, 1, 0, 0, 0), high = c(0, -1, 6, -3, 8, 5, -2, 7, 5))
ggplot(df, aes(xDim, yDim)) +
geom_raster(aes(fill = high)) +
scale_fill_gradient2(low = "blue", mid = "black", high = "red", midpoint = 0)
【问题讨论】:
-
改用
scale_fill_gradientn,并带有适当的中断和颜色。 -
确实如此。有没有办法自动化?我有许多具有许多不同值的 DF。
-
您可以使用
quantile设置休息时间。还可以考虑viridis调色板:cran.r-project.org/web/packages/viridis/vignettes/… 一些调色板看起来与您想要的相似,并且可以使用scale_fill_viridis(option="plasma")放入ggplot。