scale_gradient2 中的非对称颜色分布?

Posted

技术标签:

【中文标题】scale_gradient2 中的非对称颜色分布?【英文标题】:asymmetric color distribution in scale_gradient2? 【发布时间】:2012-07-03 05:21:43 【问题描述】:

更改 scale_fill_gradient2 的上限也会影响值

这里是使用geom_tile() 的最小情节示例:

data <- read.csv("http://protzkeule.de/data.csv")
p <- ggplot(data = data, aes(x = variable, y = meas)) + geom_tile(aes(fill = value))

具有对称限制的绘图:

p + scale_fill_gradient2(low = "blue", mid = "white", high = "red", guide = "colorbar",
                         limits = c(-0.1, 0.1))

但是当改变上限时,下限颜色映射也会改变(注意颜色条):

p + scale_fill_gradient2(low = "blue", mid = "white", high = "red", guide = "colorbar",
                         limits = c(-0.1, 0.3))

【问题讨论】:

我可能误解了您要查找的内容,但请尝试将 midpoint = -0.1 传递给 scale_fill_gradient2。这就是你想要的吗? 我的意思是0.1,显然不是-0.1,但我现在认为这不是你想要的,基于Brian的回答。 为什么这个功能的帮助文件这么差? 【参考方案1】:

你想要的是scale_fill_gradientn。论据不是很清楚(我花了一个小时左右才最终弄清楚其中的一部分),但是:

library("scales")
p + scale_fill_gradientn(colours = c("blue","white","red"), 
                         values = rescale(c(-.1,0,.3)),
                         guide = "colorbar", limits=c(-.1,.3))

这给出了:

【讨论】:

谢谢,我想我现在明白了。如果我错了,请纠正我,但是使用 values 您分配了 colours 向量中的颜色映射到的值?我唯一不明白的是,如果传递给values 的向量比传递给colours 的向量的元素多,会发生什么。 valuescolours 应该具有相同的长度。它们有效地配对,其中值对应于该点的颜色,并且它与下一个点之间的所有内容都被插值。我实际上不知道如果它们的长度不同会发生什么。它至少在概念上是一个错误,但我不知道是否引发了实际错误。在您的示例中,-0.1 映射到蓝色,0.0 映射到白色,0.3 映射到红色; -0.1 和 0.0 之间的值在蓝色和白色之间插值; 0.0 和 0.3 之间的值在白色和红色之间插值。 @BrianDiggs 我正在以类似的方式使用您的解决方案,但是有没有办法为前几个值离散地显示颜色条?例如。 the sepal length answer here @tbone 我不知道。这值得自己提出问题。 对于在 v 0.9 之后提出此问题的任何人的更新,您必须执行 library(scales) 以包含 rescale 命令,如 ***.com/questions/10006317/…

以上是关于scale_gradient2 中的非对称颜色分布?的主要内容,如果未能解决你的问题,请参考以下文章

通俗易懂的非对称加密

区块链中的非对称加密技术

区块链中的非对称加密技术

如何轻松理解区块链中的非对称加密?

CEC知识科普丨区块链的非对称加密技术

C ++中的非对称虚拟继承菱形