在PNG中保存高分辨率图

时间:2018-07-05 13:04:10

标签: r heatmap

我尝试将热图保存为png。

png(paste(colnames(pt2)[jj], "_heatmap.png", sep=""), width = 465, height = 225, res = 300)
heatmap.2(S5, Rowv=F,Colv=F, scale="none", trace="none", col=rg, mar=c(3.5,0,3,0),
      dendrogram = "none", key=TRUE, keysize=0.2, key.par=list(cex=0.1),
      xlab="hour of the day", ylab = "day of the week",
      density.info = "none", lmat=rbind(c(5, 4, 2), c(6, 1, 3)), 
      lhei=c(3, 4.5), lwid=c(0.1, 5, 1),
      cexRow=1, cexCol=1, margins = c(3,0))
dev.off()

但是它仅在最大res = 100时有效。我还尝试将其保存到高度和宽度为10X的文件中,例如width = 4650,height =2250。但是然后我无法更改该键的字体大小,它太小且看不见。如何解决高分辨率问题?它显示了

Error in plot.new() : figure margins too large
Error in par(op) : invalid value specified for graphical parameter "pin"

1 个答案:

答案 0 :(得分:1)

您的图片尺寸太小,无法容纳空白。请注意,png的默认单位是像素。因此,您以225 px的高度(以300 dpi的分辨率)可以得到小于一英寸高的图像

作为一个最小的示例,这可行(当我们将单位指定为毫米时):

png("heatmap.png", width = 465, height = 225, units='mm', res = 300)
  plot(1:10, 1:10, mar=c(3.5,0,3,0))
dev.off()

与此相反(以像素为单位)会引发与您相同的错误

png("heatmap.png", width = 465, height = 225, res = 300)
  plot(1:10, 1:10, mar=c(3.5,0,3,0))
dev.off()