【问题标题】:Pheatmap : How to keep only the dendogramPheatmap : 如何只保留树状图
【发布时间】:2020-08-11 18:11:11
【问题描述】:

我有一张通过 R 和 pheatmap 包制作的热图:

问题是它有点不清晰(我已经将它导出到 pdf 上,但我们需要缩放才能看到整个图片)加上我只想保留树状图并用 group 列整理 y 轴像这样:

这是我的数据:

    A tibble: 200 x 305
   file  phylogroup `Colicin-like U… `AAI/SCI-II, he… `Tsh, ECP` `S fimbriae, Sa… `Ferrous iron t…
   <chr> <chr>      <chr>            <chr>            <chr>      <chr>            <chr>           
 1 GCF_… B2         5.33             2.87             0.163      0.475            2.2             
 2 GCF_… E          0.00             0.00             0.000      0.000            0.0             
 3 GCF_… A          0.00             0.00             0.000      0.000            0.0             
 4 GCF_… A          0.00             0.00             0.000      0.000            0.0             
 5 GCF_… B1         0.00             0.00             0.000      0.000            0.0             
 6 GCF_… B2         0.00             0.00             0.000      0.000            1.0             
 7 GCF_… B1         0.00             0.00             0.000      0.000            0.0             
 8 GCF_… B1         0.00             0.00             0.000      0.000            0.0             
 9 GCF_… B2         0.00             0.00             0.000      0.000            1.0             

我制作的代码只适用于没有“phylogroup”列的小标题,但我会说:

#Import datas
df <- read_tsv("file.tsv")
options("digits"=3)
df = df %>% replace(is.na(.), 0) 
heatmap_data = t(df)

#replacing column names
my.names <- heatmap_data[1,] 
colnames(heatmap_data) <- my.names
heatmap_data = heatmap_data[-1,]

#Heatmap
df = as.data.frame(heatmap_data)
df[]=lapply(df, function(x) {
    if(is.factor(x)) as.numeric(as.character(x)) else x
})

df = t(df)
  df %>% pheatmap(color = colorRampPalette(c("dark grey", "yellow", "firebrick3"))(50) , legend = TRUE, treeheight_col = 2000, treeheight_row= 1500,  fontsize = 25, cellwidth = 25, cellheight = 25, cutree_cols = 303, filename = "HEATMAP_wo_cells.pdf")

编辑

好的,所以我尝试了@Marco Sandri 的建议,我得到了这个:

但是你可以看到它不是很清楚,因为我刚开始使用dendextend库你知道如何使它更清楚吗?

【问题讨论】:

  • 您应该提供一个可重现的示例,以增加获得有用答案的机会。在我看来,您好像对树状图感兴趣,而不是热图,所以不妨看看sthda.com/english/wiki/…,了解一些专门关于树状图的包和选项。
  • 我也去看看,谢谢;)

标签: r cluster-computing heatmap pheatmap


【解决方案1】:

pheatmap 函数返回行和列树状图,可以单独绘制。
请参见以下示例。

library(pheatmap)
library(dendextend)

phtmap <- pheatmap(scale(mtcars))

par(mfrow = c(1,2))
par(mar=c(2,2,1,6), oma=rep(0,4))
phtmap[[1]] %>%
 as.dendrogram() %>%
 set("branches_k_color", k=4) %>%
 set("labels_colors", k=4) %>%
 set("branches_lwd", 2) %>%  
 plot(horiz=T, lwd=2)

par(mar=c(2,2,1,2))
phtmap[[2]] %>%
 as.dendrogram() %>%
 set("branches_k_color", k=3) %>%
 set("labels_colors", k=3) %>%
 set("branches_lwd", 2) %>%  
 plot(horiz=T, lwd=2)

【讨论】:

  • 感谢您的帮助,但我不确定您的代码中的 k 是什么意思?这是聚类的 k 吗?
  • @BillyPocheo 我的代码的目的是展示如何使用pheatmap 给出的树状图。我使用了很棒的dendextendcran.r-project.org/web/packages/dendextend/vignettes/… k 参数是组数(传递给cutree)。请参阅color_branches 的帮助。
  • 好的,所以传递给 cutree 的组数在我的情况下就是系统发育群的数量?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多