【发布时间】:2019-07-25 20:31:32
【问题描述】:
我有一个包含两个变量的数据,我希望看到一个带有热图的图,每个图都相互叠加,并显示两个不同变量的两个色标。我的代码虽然不正确,但应该清楚地表明我想要实现的目标。
我查看了几个示例,这些示例都没有说明如何为 geom_tile() 执行此操作。 geom_point 会很容易。我提供了一个综合示例来展示我在做什么。我收到错误消息“'填充'的比例已经存在。为'填充'添加另一个比例,它将替换现有的比例。”显然它只接受第二个 scale_fill_gradient,但我想查看与同一热图中的变量对应的颜色渐变。 如果我能找到一种方法来获得这个情节,那就太好了。谢谢!
library(reshape2)
library(ggplot2)
set.seed(2)
m1 = matrix(rnorm(100), nrow=10)
m2 = matrix(rnorm(100), nrow=10)
M1 = melt(m1)
M2 = melt(m2)
names(M1) = c("Var1", "Var2", "value1")
names(M2) = c("Var1", "Var2", "value2")
pp1 <- ggplot() +
geom_tile(data=M1, aes(x=Var1, y=Var2, fill=value1)) +
scale_fill_gradient(low="white", high="red") +
geom_tile(data=M2, aes(x=Var1, y=Var2, fill=value2)) +
scale_fill_gradient(low="blue", high="yellow")
pp1
【问题讨论】:
-
重叠颜色的问题是给定图块中的结果颜色会有所不同。那将是与两个色标不同的颜色。所以你需要一个双变量颜色图例。
-
我对实际使用中的两个重叠热图并不熟悉。你有没有做的例子,不管“做得好”还是“做得好”? (我认为,类似于关于在绘图上具有多个 y 轴的讨论,它很容易令人困惑,因此不鼓励,因此不容易支持。)
-
你可以做 M2$value_1
-
将图像的通道视为单独的灰度图像。因此,我一定希望将它们视为热图,以查看各个通道的强度但重叠。 @r2evans
-
@PabloRod 我明白你的意思;映射到 alpha 实际上并不能满足我的目的……但谢谢!