我下面有数据框
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,为什么着色似乎不正确。
答案 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"))