根据变量关系创建二进制热图

时间:2019-06-09 15:52:19

标签: r ggplot2 heatmap

我下面有数据框

DrugName <- c("as","df","fg","gh","jk")
value <- c("AD","AD","AD","AD","SEL")
MELT <- data.frame(DrugName, value)

,我想创建一个热图,将药物名称作为行,将目标符号作为列(在热图下方),如果药物与目标之间没有关联,则网格正方形应为白色 或黑色(如果药物与靶标之间存在关联)。  我使用:

library(ggplot2)
ggplot(MELT, aes(value, DrugName)) +
 geom_tile() +
 geom_tile(aes(fill = value), colour = "white") + 
 scale_fill_manual(values = c("white", "black"))

我得到: enter image description here

我不明白为什么该图似乎有3列而值是2,为什么着色似乎不正确。

1 个答案:

答案 0 :(得分:2)

使用table计算'DrugName'和'value'的每种组合,转换为data.frame。将fill映射到“ Freq”的离散版本。

在示例中,计数仅为0或1,您可以使用fill = factor(Freq)映射填充颜色。如果“ Freq”也具有值> 1,则您可以强制使用“ Freq”的二进制版本:fill = Freq != 0

ggplot(data.frame(table(MELT)), aes(value, DrugName, fill = factor(Freq))) +
  geom_tile(color = "grey") +
  scale_fill_manual(values = c("white", "black"))

enter image description here