根据变量关系创建二元热图

Create a binary heatmap based on variables relationship

我有下面的数据框

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"))

我得到:

我不明白为什么绘图似乎有 3 列,而值是 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"))