【发布时间】:2012-06-27 18:06:19
【问题描述】:
我正在使用ggplot2 制作测量热图。数据包含正值和负值,我使用rainbow() 调色板进行着色。
我有不同的数据集,并希望以使每个数据集的最小值、最大值和 0 值分配相同颜色的方式缩放颜色。我只能找到使用limits=...来设置最小值和最大值
我怎样才能为 0 定义一个给定的颜色?
这是我的最小示例,例如,如果我要使用 Rainbow(5),我希望第 3 种颜色是零颜色。
data <- read.csv("http://protzkeule.de/data.csv")
ggplot(data=data, aes(x=variable, y=meas)) +
geom_tile(aes(fill=value)) +
scale_fill_gradientn(colours=rev(rainbow(255)),limits=c(-.2,.4))
【问题讨论】:
-
你看过the examples吗? (特别是使用
values和rescale参数 -
从示例中我了解如何使比例对称(这与设置对称限制一样吗?)。但我不希望正负比例是对称的,我希望它们从 min() 扩展到 max() 但即使范围发生变化,0 也始终具有相同的颜色,例如在不同的数据中设置。
-
我发现在
scale_fill_gradient2()中我可以为low、high和mid定义颜色。我什至尝试将一种以上的颜色传递给low和high,这很有效,但我不确定这是否是偶然的,因为它会在您传递时“移动”中间颜色让我们说一种颜色给low和 3 到high。