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
的向量的元素多,会发生什么。
values
和 colours
应该具有相同的长度。它们有效地配对,其中值对应于该点的颜色,并且它与下一个点之间的所有内容都被插值。我实际上不知道如果它们的长度不同会发生什么。它至少在概念上是一个错误,但我不知道是否引发了实际错误。在您的示例中,-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 中的非对称颜色分布?的主要内容,如果未能解决你的问题,请参考以下文章