【问题标题】:How can I create a colormap with a fixed color for 0 in R / ggplot如何在 R / ggplot 中为 0 创建具有固定颜色的颜色图
【发布时间】: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吗? (特别是使用valuesrescale 参数
  • 从示例中我了解如何使比例对称(这与设置对称限制一样吗?)。但我不希望正负比例是对称的,我希望它们从 min() 扩展到 max() 但即使范围发生变化,0 也始终具有相同的颜色,例如在不同的数据中设置。
  • 我发现在scale_fill_gradient2() 中我可以为lowhighmid 定义颜色。我什至尝试将一种以上的颜色传递给lowhigh,这很有效,但我不确定这是否是偶然的,因为它会在您传递时“移动”中间颜色让我们说一种颜色给low和 3 到 high

标签: r colors ggplot2


【解决方案1】:

也许是一种不同的方法:对于我的绘图,我发现削减用于颜色的值更容易:

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

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 2020-03-08
    • 1970-01-01
    • 2021-11-01
    • 2012-07-01
    • 2021-09-05
    • 1970-01-01
    • 2013-10-08
    • 2020-09-02
    相关资源
    最近更新 更多