【问题标题】:Why am I not getting high-resolution with ggsave()?为什么我无法使用 ggsave() 获得高分辨率?
【发布时间】:2022-05-13 03:16:09
【问题描述】:

我正在尝试使用 ggsave 获得 300 dpi 的图像,但我只获得了默认的 72 dpi。

这是我正在使用的代码示例:

library(tidyverse)
x <- rnorm(100, 5, 1)
x <- tibble(x)
ggplot(x, aes(x = x)) + geom_histogram()
ggsave("hist.png", width = 10, height = 10, units = "in", dpi = 300)

当我运行它时,我得到一个 72 dpi 的 .png 文件。我正在使用带有 Catalina 10.15.7 的 MAC,并且今天更新到最新版本的 R 和 ggplot2。

【问题讨论】:

  • 如果你切换dpi,最终分辨率会改变吗?只是想看看它是否对该输入做出响应
  • 根据 Mac Preview 中的“inspector”,它会更改图像大小(以像素为单位),但不是 dpi 仍然是 72。例如,300 dpi 产生 3000 X 3000 像素;而 400 dpi 产生 4000 X 4000 像素。
  • A previous post 问同样的事情没有得到答案,但有一些可能会有所帮助的 cmets。您可能还想指定一个图形设备,例如 cairo 或 agg,并传递其特定参数。例如,在最近的调试中,我发现当我使用 agg 时,我必须使用 res 参数,而不是 dpi
  • 如果您要获得 3000 X 3000 10 英寸的 300dpi 图像,以及 4000 X 4000 10 英寸的 400dpi 输出图像,那将是正确的。那么是什么让你确定你没有得到 72dpi 以外的任何东西
  • 最近一篇有用的博文解释了 ggplot2 的分辨率:christophenicault.com/post/understand_size_dimension_ggplot2

标签: r image ggplot2


【解决方案1】:

我也遇到了同样的问题,跟着@Jon Spring 网址,一切都已修复

使用inspector检查每张图片后,我的经验是:

# Mixed results
ggsave("img_ggsave.tiff", img,width = 6,height=7, dpi=300, units = "in")

# Does not work for mac
tiff("img_native.tiff", width = 6, height = 7, units = "in", res = 300)
img
dev.off()

# ragg always works for mac
ragg::agg_tiff("img_ragg.tiff", width = 6, height = 7, units = "in", res = 300)
img
dev.off()

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2016-08-17
    • 2017-12-21
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多