我有兴趣拥有一个“好”的发散调色板。显然可以只使用红色、白色和蓝色:
img <- function(obj, nam) {
image(1:length(obj), 1, as.matrix(1:length(obj)), col=obj,
main = nam, ylab = "", xaxt = "n", yaxt = "n", bty = "n")
}
rwb <- colorRampPalette(colors = c("red", "white", "blue"))
img(rwb(100), "red-white-blue")
因为最近迷上了 viridis的调色板,所以希望能把viridis和magma结合起来,形成这样发散的颜色(当然,色盲的人只会看到颜色的绝对值,但有时也可以)。
当我尝试结合 viridis 和 magma 时,我发现它们不会在同一个地方“结束”(或“开始”),所以我得到这样的结果(我正在使用 R,但这可能与蟒蛇用户):
library(viridis)
img(c(rev(viridis(100, begin = 0)), magma(100, begin = 0)), "magma-viridis")
我们可以看到,当接近于零时,viridis 是紫色的,而岩浆是黑色的。我希望它们都从(或多或少)同一个位置开始,所以我尝试使用 0.3 作为起点:
img(c(rev(viridis(100, begin = 0.3)), magma(100, begin = 0.3)), "-viridis-magma(0.3)")
这样确实更好,但是不知道有没有更好的解决办法。
(我也在“标记” python 用户,因为 viridis 最初来自 matplotlib
,所以使用它的人可能知道这样的解决方案)
谢谢!
原文由 Tal Galili 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现 Kenneth Moreland 的提议 非常有用。它现在已在 --- 中实现为
cool_warm
heatmaply
:与插值的 RColorBrewer“RdBu”相比,它在实际操作中的样子: