Pheatmap:如何只保留树状图
Pheatmap : How to keep only the dendogram
我有一张热图,是我通过 R 使用 pheatmap 包制作的:
问题是它有点不可靠(我已经将它导出为 pdf,但我们需要缩放才能看到整个图片)而且我只想保留树状图并用组列整理 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”列的 tibble,但我会把它放在 :
#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 库你知道如何让它更清楚吗?
pheatmap
函数 returns 行和列树状图,可以单独绘制。
请参阅以下示例。
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)
我有一张热图,是我通过 R 使用 pheatmap 包制作的:
问题是它有点不可靠(我已经将它导出为 pdf,但我们需要缩放才能看到整个图片)而且我只想保留树状图并用组列整理 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”列的 tibble,但我会把它放在 :
#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 库你知道如何让它更清楚吗?
pheatmap
函数 returns 行和列树状图,可以单独绘制。
请参阅以下示例。
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)