我有一个制表符分隔的文件,如下所示:
C1P C2P C3P C4P C5P
sam1 3 cp 3 cp 3 cp 3 cp 3 cp
sam2 S3c 4 cp 3 cp 3 cp S3c
sam3 3 cp 3 cp 3 cp 3 cp 3 cp
sam4 3 cp 3 cp LOH LOH 3 cp
sam5 3 cp 3 cp 3 cp 3 cp 3 cp
sam6 4 cp 4 cp UPD UPD UPT
现在,我想为每个值[condition]分配颜色,并让颜色出现在具有相同值的任何地方,从而制作一个热图来表示每个条件中特定条件[列中的值]的出现示例[行标题]。
现在,我为每个条件分配数值,然后通过pheatmap生成热图。但是我一直在寻找更强大的方法。
感谢任何帮助。
答案 0 :(得分:1)
这应该使您更加亲密:
library(tidyverse)
df %>%
rownames_to_column("row") %>%
gather(col, Value, -row) %>%
mutate(
row = factor(row, levels = rev(unique(row))),
Value = factor(Value)) %>%
ggplot(aes(col, row, fill = Value)) +
geom_tile() +
scale_fill_manual(values = c(
`3 cp` = "yellow",
`4 cp` = "red",
LOH = "blue",
S3c = "lightgreen",
UPD = "darkgreen",
UPT = "black")) +
labs(x = "", y = "") +
theme_minimal()
说明:
geom_tile
绘制热图,其中填充颜色由值的factor
级别给出。df <- read.table(text =
" C1P C2P C3P C4P C5P
sam1 '3 cp' '3 cp' '3 cp' '3 cp' '3 cp'
sam2 'S3c' '4 cp' '3 cp' '3 cp' 'S3c'
sam3 '3 cp' '3 cp' '3 cp' '3 cp' '3 cp'
sam4 '3 cp' '3 cp' LOH LOH '3 cp'
sam5 '3 cp' '3 cp' '3 cp' '3 cp' '3 cp'
sam6 '4 cp' '4 cp' UPD UPD UPT", header = T)