Сохранение графика высокого разрешения в png - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь сохранить тепловую карту в 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()

Но это работает только при максимальном разрешении = 100. Я также попытался сохранить его в файл с 10-кратной высотой и шириной, например, ширина = 4650, высота = 2250. Но тогда я не могу изменить размер шрифта для ключа, он слишком маленький и невидимый. Как я могу решить с высоким разрешением? Показывает

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

1 Ответ

0 голосов
/ 05 июля 2018

Ваш размер изображения слишком мал, чтобы поместиться на полях. Обратите внимание, что единицей по умолчанию для png являются пиксели. Таким образом, ваш рост 225 пикселей при разрешении 300 точек на дюйм дает изображение высотой менее одного дюйма

Как минимальный пример, это работает (когда мы указываем единицы измерения в миллиметрах):

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()
...