我有一个非常简单的问题,但是我一直在努力寻找在线答案。
我有一个用 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")
但是,由于某种原因,散点图正在吸收两个梯度,而不仅仅是吸收了“颜色”梯度。由于热图的值非常接近于零,散点图的值很高,因此“填充”部分使热图变为灰色。
我以此为参考来尝试两个渐变:Using two scale colour gradients ggplot2
答案 0 :(得分:3)
这是一个简单的可重现示例,将填充和颜色分别用于栅格和点。请注意,为了使其正常工作,我们对这些点使用了实心而不是实心的形状。并且我们确保美学在相关的领域中,因此它们不会被其他人继承。还要注意,对点和栅格使用不同的值名称可能是更好的做法,但是在示例中,我同时调用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")