r - 连续渐变颜色和固定比例热图 ggplot2

标签 r ggplot2 colors heatmap continuous

我正在从 Mathematica 切换到 R,但我发现在可视化方面存在一些困难。

我正在尝试按如下方式制作热图:

short 
   penetration scc          pi0
1            0   0  0.002545268
2            5   0 -0.408621176
3           10   0 -0.929432006
4           15   0 -1.121309680
5           20   0 -1.587298317
6           25   0 -2.957853131
7           30   0 -5.123329738
8            0  50  1.199748327
9            5  50  0.788581883
10          10  50  0.267771053
11          15  50  0.075893379
12          20  50 -0.390095258
13          25  50 -1.760650073
14          30  50 -3.926126679
15           0 100  2.396951386
16           5 100  1.985784941
17          10 100  1.464974112
18          15 100  1.273096438
19          20 100  0.807107801
20          25 100 -0.563447014
21          30 100 -2.728923621

mycol <- c("navy", "blue", "cyan", "lightcyan", "yellow", "red", "red4")

ggplot(data = short, aes(x = penetration, y = scc)) +
  geom_tile(aes(fill = pi0)) +
  scale_fill_gradientn(colours = mycol)

我明白了:

enter image description here

但我需要这样的东西:
enter image description here

也就是说,我希望颜色在绘图表面上是连续的(降级),而不是每个正方形的离散颜色。我在其他 SO 问题中看到,有些人会插入数据,但我认为在 ggplot 调用中应该有一种更简单的方法(在 Mathematica 中默认完成)。

此外,我想锁定色标,以便 0 始终为白色(因此在正值的暖色和负值的冷色之间分开)并且颜色分布在与数据范围无关的图上始终相同(因为我将对几个数据集使用相同的绘图结构)

最佳答案

您可以使用 geom_rasterinterpolate=TRUE :

ggplot(short , aes(x = penetration, y = scc)) +
  geom_raster(aes(fill = pi0), interpolate=TRUE) +
  scale_fill_gradient2(low="navy", mid="white", high="red", 
                       midpoint=0, limits=range(short$pi0)) +
  theme_classic()

enter image description here

将相同的颜色映射到 pi0 的值在您的所有地块中,设置 limits scale_fill_gradient2 的论据在每个情节中都是相同的。例如,如果您有三个名为 short 的数据框, short2 , 和 short3 , 你可以这样做:
# Get range of `pi0` across all data frames
pi0.rng = range(lapply(list(short, short2, short3), function(s) s$pi0))

然后设置limits=pi0.rngscale_fill_gradient2在你所有的情节中。

关于r - 连续渐变颜色和固定比例热图 ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772017/

相关文章:

r - 如何使用 dplyr 内的函数或表达式对 dplyr 内的公式调用创建的 t.test 模型的属性进行变异?

r - 在不明确指定中断的情况下改进糟糕的自动刻度位置选择

r - Facet_Wrap 标题与 ggplotly 中的 y 轴重叠?

python - 将 RGB 颜色转换为英文颜色名称,如 Python 中的 'green'

language-agnostic - 电子墨水/电子纸屏幕可以在 RGB、CMYK 或其他颜色空间下工作吗?

r - 如何以编程方式取消、推导、反编译、反向工程用于构造数据集中变量的算法

r - 在 plyr 调用中使用 svyglm

r - 将文本添加到 ggplot 中的 Axis 标签

image - react native 状态动态颜色

r - 如何通过 R 访问 HDFS?