如何将使用ComplexHeatmap包创建的热图保存为PNG格式?

6

我用 R 中的 ComplexHeatmap 包制作了一个热力图。我想将地图保存在我的电脑上,运行以下代码:

df <- read.csv("/home/aahm/filename.csv")
View(df)

df1<- t(df[,2:ncol(df)])
colnames(df1) <- df[,1]
View (df1)
df2 <- scale(df1)

library(ComplexHeatmap)
library(RColorBrewer)
library(circlize)
mycols <- colorRamp2(breaks = c(0, 0.2, 0.4, 0.6, 1.0), 
                     colors = c('white', "green", "red", "magenta", "blue"))

png(file="/home/aahm/Desktop/filename_heatmap.png")
Heatmap(df1, width = unit(15, "cm"),
        name = "nucleotide diversity scores",
        row_names_gp = gpar(fontsize = 7), column_title = "Nucleotide Positions", row_title = '1000 Genomes populations',
        column_title_side = "bottom",
        col = mycols,
        show_column_dend = FALSE, cluster_rows = FALSE,
        column_order = order(as.numeric(gsub("column", "", colnames(df1)))),
        column_names_rot = 45,
)
dev.off()

我的桌面上创建的是一个扩展名为 .png 的空文本文件,而不是带有地图的 png 文件。有人能帮我找出代码中的问题吗?

2个回答

7
根据 ComplexHeatmap 指南 (https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html),您只需将热图保存为新变量,然后使用 draw() 函数在 PDF 文件中创建绘图即可。
 png(file="/home/aahm/Desktop/filename_heatmap.png")
 ht <- Heatmap(...)
 draw(ht)
 dev.off()

你也可以使用热图函数的一些额外参数,例如use_raster, raster_quality, raster_resize_mat, raster_by_magick等。


2
代码的顺序应该像这样。
png("test.png",width=3.25,height=3.25,units="in",res=1200)

您的热图代码
dev.off()

更新

按照您所需的尺寸进行保存。您需要尝试哪种分辨率最适合您。

png("test.png",width=3.25,height=3.25,units="in",res=1200)

谢谢。这个真的起作用!如果我想要改变图的高度和宽度怎么办? - ahusnoo
只需添加维度即可更新答案...请给我一分钟。如果答案对您有帮助,请点赞并标记它。 - PesKchan
1
我已经为你的答案点赞了。它说:感谢反馈!那些声望低于15的用户投票会被记录,但不会改变公开显示的帖子分数。 - ahusnoo
更新后的答案不起作用。它再次给我一个空的文本文件。 - ahusnoo
1
谢谢 @PesKchan。现在它可以工作了。太棒了! - ahusnoo
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接