用R中的公共值矩阵绘制热图

用R中的公共值矩阵绘制热图,r,heatmap,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

我有一个选项卡分隔的文件,如下所示:

        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
现在,我想为每个值[条件]…指定一种颜色,并让颜色出现在存在相同值的任何位置,从而生成一个热图,表示每个示例[行标题]中出现的特定条件[列中的值]

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


感谢您的帮助。

这会让您非常接近:

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绘制热图,填充颜色由值的因子级别给出。 其余部分是美学上的绒毛,以增加与链接到的图像的相似性。 样本数据
欢迎来到SO!最好在R中加入一些可供复制和使用的内容,以获得好的答案。但是,您可以查看ggplot2包中的geom_tile,并且查看数据时,您必须将它们从宽格式放到长格式之前。您尝试过吗image@s_t谢谢你…我会记住的。。。是的,我看到ggplots在实验室里创造了奇迹…@HolgerBarlt我没有尝试过…,但我以前尝试过使用它,但我发现很难将我的头放在那个包上。。。所以我切换到pheatmap和Heatmap 2…:。。。谢谢你……这正是我想要的。由于我在R脚本方面不是很丰富,我有一些疑问:Q1:%>%在做什么?问题2:mutate是一个将行转换为单个列的函数吗?事实上,我得到了很多条件,不仅仅是4-5个条件,所以我如何动态地为它们分配颜色?……非常感谢您的帮助@SangramJB Q1.%>%是magrittr管道操作符,它将左侧的值管道化为右侧的表达式,将x%>%f而不是fx。问题2。mutate是在data.frame或tible中添加/更改变量的关键dplyr函数之一。一般来说,我推荐一个基本的dplyr/ggplot2教程来开始。我会做一个糟糕的工作,试图在这里解释一个评论的细节:d…不,那没关系…我肯定可以通过一些教程。。。。dplyr/ggplot2…明白了…非常感谢…还有一件事..如果我有15个字段要分配颜色,而不是像示例中的6个字段,会怎么样???如何自动分配颜色?非常欢迎@SangramJB。如果您删除整个刻度填充手册。。。块,ggplot将自动分配颜色。我只使用了比例填充手册来增加与你作品中展示的情节的审美相似性。
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)