在R中的公共值矩阵之外绘制热图

时间:2018-09-17 11:30:14

标签: r heatmap

我有一个制表符分隔的文件,如下所示:

        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]分配颜色,并让颜色出现在具有相同值的任何地方,从而制作一个热图来表示每个条件中特定条件[列中的值]的出现示例[行标题]。

enter image description here

现在,我为每个条件分配数值,然后通过pheatmap生成热图。但是我一直在寻找更强大的方法。

感谢任何帮助。

1 个答案:

答案 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()

enter image description here

说明:

  1. 从宽到长重塑数据。
  2. 使用geom_tile绘制热图,其中填充颜色由值的factor级别给出。
  3. 其余的是美学“绒毛”,可以增加与您链接到的图像的相似性。

样本数据

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)