R语言pheatmap画热图遇到的一个报错

首先是准备数据

画热图的数据
image.png

数据是随便构造的,没啥意义

表示样本的分组数据
image.png
表示基因的一个分组数据
image.png

作图代码

读入数据
df1<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet1",
               row.names=1)
df1
df2<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet2",
               row.names=1)
df2
df3<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet3",
               row.names=1)
df3
作图
library(pheatmap)
anno_colors<-list(
  Group1=c(A="red",B="blue"),
  Group2=c(Up="red",Down="blue")
)
pheatmap(df1,
         annotation_row = df3,
         annotation_col = df2,
         annotation_colors = anno_colors)

这里遇到报错
Error in convert_annotations(annotation_col, annotation_colors) : Factor levels on variable Group1 do not match with annotation_colors

大体能猜到是表示基因的分组信息和代码里自定义颜色的部分对不上,可是检查了好长时间也一直没有发现问题在哪里,过了一段时间运行table(df3$Group2)命令的时候才发现了问题

image.png

table的输出结果里默认的是右对齐,Up那个没有对齐是以为p后面还有一个空格,最终报错的原因是准备原始数据的时候不小心在文本后多加了一个空格,最终浪费了好长时间,做人途准备数据的时候一定要认真,这里的数据必须是完全对应上才可以

最终的画图结果是

image.png

完整代码

library(xlsx)
help(package="xlsx")
df1<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet1",
               row.names=1)
df1
df2<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet2",
               row.names=1)
df2
df3<-read.xlsx("heatmap/heatmap_example.xlsx",
               sheetName = "Sheet3",
               row.names=1)
df3

library(pheatmap)
anno_colors<-list(
  Group1=c(A="red",B="blue"),
  Group2=c(Up="red",Down="blue")
)
pheatmap(df1,
         annotation_row = df3,
         annotation_col = df2,
         annotation_colors = anno_colors)

示例数据自己模仿开头的图片自己构造就可以啦,如果这个示例数据的话直接在文末留言就可以了

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容