首页 > 解决方案 > 在 ggsave 中设置分辨率:如何保存具有设置分辨率、高度和宽度的 png?

问题描述

我有一个代码,它产生了几个条形图lapply。在这段代码中,我想为我的 pngs 自动指定单位、宽度、高度和分辨率ggsave(我需要调整我制作的图片的比例,因为几周前我已经制作了数百张 emf 图片并得出结论: png 是更好的格式)。

我的问题与我以前的一篇文章有​​关(R:使用 ggplot2 和 lapply 生成几个条形图:如何根据列表插入字幕?),但这里的这篇文章更多地是关于 pngs。

如果我不使用 lapply 并按条形图制作条形图,则效果很好:首先我设置我的工作目录,然后指定我的 png,然后再次关闭设备:

png(filename="190709_bp_DA_MQ.png",units = "in",width=10, height=7,res = 120)

但是使用lapplyand ggplot( ggsaveand paste) 它不再起作用了。我收到以下错误

grDevices::png(..., res = dpi, units = "in") 中的错误:形式参数“res”与多个实际参数匹配

###producing some random data
df <- data.frame(
  value = floor(runif(20,min=0,max=30)),
  Intervall = paste("Intervall",rep(1:10,2)), 
  type = rep(c("a", "b"))
)

list1 <- split(df, df$type)

###producing plots with lapply and ggplot
path <- ("S:/")
plots <- lapply(names(list1), function(nm) {
  ggplot(list1[[nm]], aes(Intervall, value)) + 
    geom_bar(stat = "identity") + 
    labs(title = "Intervalle", subtitle = nm)
})
names(plots) <- names(list1)

plots

#saving as pngs
lapply(names(plots), function(nm) { 
  ggsave(filename = paste(path, nm, ".png", sep = ""), 
         width = 10, height = 7, plot = plots[[nm]])
})


#If I only specify width and height, the code works. 

#But: I want to have the units in Inches and also add the resolution. if I add #units and resolution, the code doesnt work anymore. 

lapply(names(plots), function(nm) {
  ggsave(filename = paste(path,nm, ".png", sep = ""), 
         units = "in", width = 10, height = 7, res = 120, plot = plots[[nm]])
})

标签: rggplot2sizepnglapply

解决方案


推荐阅读