美文网首页R小技巧
【R>>pheatmap】match专治各种不服?

【R>>pheatmap】match专治各种不服?

作者: 高大石头 | 来源:发表于2021-05-13 07:37 被阅读0次

在绘制热图时,标签顺序怎么都不按自己的想法,整的我都快没脾气了。类似这种:


rm(list = ls())
library(pheatmap)
test <- matrix(rnorm(100),20,20)
test[1:10,seq(1,10,2)]=test[1:10,seq(1,10,2)]+4
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 6
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 8
colnames(test) = paste("Test", 1:20, sep = "")
rownames(test) = c(paste("Gene", seq(2,20,by=2),"**", sep = ""),paste("Gene", seq(1,19,by=2),"", sep = ""))
pheatmap(test)
Type=c(rep("N",10),rep("T",10))
names(Type)=colnames(test)
Type <- as.data.frame(Type)
pheatmap(test,
         cluster_rows = F,
         cluster_cols = F,
         scale = "row",
         annotation_col = Type)

首先自定义需要的顺序:

genelist <- c('Gene1','Gene2**','Gene3','Gene4**','Gene5','Gene6**','Gene7','Gene8**','Gene9','Gene10**','Gene11','Gene12**','Gene13','Gene14**','Gene15','Gene16**','Gene17','Gene18**','Gene19','Gene20**')
genelist <- factor(genelist,levels = genelist)
genelist
[1] Gene1    Gene2**  Gene3    Gene4**  Gene5    Gene6**  Gene7    Gene8**  Gene9    Gene10**
[11] Gene11   Gene12** Gene13   Gene14** Gene15   Gene16** Gene17   Gene18** Gene19   Gene20**
20 Levels: Gene1 Gene2** Gene3 Gene4** Gene5 Gene6** Gene7 Gene8** Gene9 Gene10** ... Gene20**

这时按照这个顺序去排序rownames是不是就可以了呢?试一试

test <- test[genelist,]
head(test)
Test1      Test2    Test3      Test4    Test5      Test6    Test7      Test8    Test9
Gene2**  4.176043 -1.2732772 3.148016  0.7637291 5.743130  0.1760431 2.726723 -0.8519841 4.763729
Gene4**  5.273485  0.1687609 4.919915  0.1974605 5.653718  1.2734848 4.168761  0.9199151 4.197461
Gene6**  3.382290 -0.1863888 5.285244 -0.4088611 4.174547 -0.6177103 3.813611  1.2852440 3.591139
Gene8**  3.277272 -1.1306419 2.638180  1.2198956 5.597580 -0.7227279 2.869358 -1.3618202 5.219896
Gene10** 3.231016  0.4078852 4.543947 -1.4453278 4.500175 -0.7689839 4.407885  0.5439469 2.554672
Gene12** 4.708585 -0.6848347 5.374241 -2.0126771 3.536655  0.7085849 3.315165  1.3742411 1.987323

好像根本没有用,这可咋办呢?

思考:我们只是需要将行名按照自己需求的顺序排列,顺序其实就是位置信息嘛,位置信息最好的转化方法是match呀。

match粉墨登场

test <- test[match(genelist,rownames(test)),]
test <- t(scale(t(test)))
pheatmap(test,
         cluster_rows = F,
         cluster_cols = F,
         scale = "row",
         annotation_col = Type)

竟然神奇的按照需要的顺序排列了


总结

核心函数:test[match(genelist, rownames(test)),]

相关文章

  • 【R>>pheatmap】match专治各种不服?

    在绘制热图时,标签顺序怎么都不按自己的想法,整的我都快没脾气了。类似这种: 首先自定义需要的顺序: 这时按照这个顺...

  • 专治不服

    专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专治不服专...

  • 专治各种不服!

    今天,为响应教体局的号召,我校花重金聘请教官来为学生军训! 来到操场,看到孩子们的队伍,顿觉不同,英姿飒爽,不同于...

  • 丽江|专治各种不服

    | 丽江 | 像是在这个物欲横流、纷繁复杂的杂锅里 一座不被融化的孤岛 藏起来了劳苦奔波、雾霾口罩 冰冻起了工作压...

  • 2018-09-09

    你们给劳资等着,专治各种不服,专业打脸20年。

  • 专治各种不服?是吗?

    见了一个朋友,他说他近一年来觉得生活很窒息,却无处突围。当时间和精力被一份经常 over time的工作占满,就算...

  • 专治各种不服的楼市!

    楼市风云莫测,人心惶惶不安,若问出路在何方,悲臣也想问! 在经历了2016年金九银十的变态楼市之后,...

  • 专治保安各种不服

    秦皇岛银盾提供秦皇岛消防器材、秦皇岛安保器材、秦皇岛户外装备、秦皇岛安防监控、秦皇岛消防设备、秦皇岛消防 水带、秦...

  • 专治各种不服的病毒

    新冠疫情病毒的防治情况,撇开公共管理层面不讲,单从价值观这一点分类,显然可见集体意识強的国家的防治情况显然好于个人...

  • 挫折呀,专治各种不服

    不知不觉已经在家一周多了 不是被封控 而是单位不让去了 海淀朝阳还有好多地方已经不让去单位上班了 疫情三年 才知道...

网友评论

    本文标题:【R>>pheatmap】match专治各种不服?

    本文链接:https://www.haomeiwen.com/subject/tjhtjltx.html