带有 geom_raster 和 geom_point 的两种颜色渐变

jpu*_*ese 2 r heatmap ggplot2

我有一个非常简单的问题,但我一直在努力在网上寻找答案。

我有一个用ggplot + geom_raster制作的热图。我想在每个矩形内插入一个符号,以便它们可以传达另一条信息。为此,我想到了使用geom_point

绘图很棒,但我在颜色渐变方面遇到了问题。

plot <- ggplot(data, aes(x = Var1, y = Var2, fill = value)) +
        geom_tile() + 
        geom_raster(aes(fill=value)) +
        scale_fill_gradient2(low = "gray", high = "red", mid = "#e3e3e3", midpoint = "0") + 
        geom_point(data = significance, aes(x = Var1, y = Var, color = value), shape = 21, size = 3) +
        scale_color_gradient(low = "gray", high = "gray")
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,散点图同时吸收了两个梯度,而不仅仅是吸收了“颜色”梯度。由于热图的值非常接近于零,而散点图的值很高,因此“填充”部分使热图全为灰色。

我以此作为参考尝试两种渐变:使用两种比例颜色渐变 ggplot2

dww*_*dww 5

这是一个简单的可重复示例,分别为栅格和点使用填充和颜色。请注意,为了使其工作,我们对点使用实心而不是填充形状。并且我们确保美学在相关的几何体中,因此它们不会被另一个继承。另请注意,为 hte 点和栅格使用不同的值名称可能是更好的做法,但在示例中我调用两者value以匹配 OP 中的示例。

df1 = data.frame(expand.grid(x=1:10, y=1:10), value = rnorm(100))
df2 = data.frame(x = sample(1:10), y =  sample(1:10), value = runif(10,20,50))

ggplot(df1, aes(x = x, y = y)) +
  geom_tile(aes(fill = value)) + 
  scale_fill_gradient2(low = "gray", high = "red", mid = "#e3e3e3", midpoint = 0) +
  geom_point(data = df2, aes(color = value), shape = 19, size = 3) +
  scale_color_gradient(low = "gray", high = "blue")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明