如何在R/ggplot中为0创建具有固定颜色的颜色贴图

如何在R/ggplot中为0创建具有固定颜色的颜色贴图,r,colors,ggplot2,R,Colors,Ggplot2,我正在使用ggplot2生成测量热图。数据包含正值和负值,我使用rainbow()调色板进行着色 我有不同的数据集,并希望以某种方式缩放colora,使每个数据集的最小值、最大值和0值获得相同的颜色分配。我只能使用limits=… 如何为0定义给定的颜色 这里是我的最小示例,如果我使用彩虹(5),我希望第三种颜色是零颜色 data <- read.csv("http://protzkeule.de/data.csv") ggplot(data=data, aes(x=variable, y

我正在使用
ggplot2
生成测量热图。数据包含正值和负值,我使用
rainbow()
调色板进行着色

我有不同的数据集,并希望以某种方式缩放colora,使每个数据集的最小值、最大值和0值获得相同的颜色分配。我只能使用
limits=…

如何为0定义给定的颜色

这里是我的最小示例,如果我使用彩虹(5),我希望第三种颜色是零颜色

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))

data可能是另一种方法:对于我的绘图,我发现更容易剪切用于颜色的值:

ggplot(...) +
stat_bin2d (aes(fill=ifelse(..count..>20,20,..count..)), bins = 10) +
scale_fill_gradientn("Count", colours=c("blue", "yellow", "red")) + ...

也许是另一种方法:对于我的绘图,我发现更容易剪切用于颜色的值:

ggplot(...) +
stat_bin2d (aes(fill=ifelse(..count..>20,20,..count..)), bins = 10) +
scale_fill_gradientn("Count", colours=c("blue", "yellow", "red")) + ...

你看过吗?(特别是,使用示例中的
重缩放
参数,我了解如何使比例对称(这与正确设置对称限制相同)。但我不希望正比例和负比例对称,我希望它们从min()扩展到max()但是,即使范围发生变化,0也始终具有相同的颜色,例如在不同的数据集中。我发现在
scale\u fill\u gradient2()中
我能够为
定义颜色。我甚至尝试将多个颜色传递给
,但我不确定这是否是它“移动”时的意外一旦你通过,比如说1色到
和3色到
。你看了吗?(特别是,使用
重缩放
参数,从示例中我了解了如何使缩放对称(这与正确设置对称限制相同?).但我不希望正负比例是对称的,我希望它们从min()扩展到max(),但即使范围发生变化,0也始终具有相同的颜色,例如在不同的数据集中。我发现在
scale\u fill\u gradient2()中
我能够为
定义颜色。我甚至尝试将一种以上的颜色传递给
,但我不确定这是否是偶然的,因为当你通过时,它会“移动”中颜色,比如说,1种颜色传递给
,3种传递给