【问题标题】:Set the size of ggsave exactly准确设置 ggsave 的大小
【发布时间】:2020-06-21 21:44:57
【问题描述】:

R 问题。

我被widthheightdpiunit 弄糊涂了。

为什么以下两种尺寸不同?

ggsave(filename = "foo.png",ggplot(mtcars, aes(x=wt, y=mpg)) +
    geom_point(size=2, shape=23),width = 5, height = 4, dpi = 300, units = "in", device='png')

ggsave(filename = "foo.png",ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23),width = 5, height = 4, dpi = 72, units = "in", device='png')

我将图片的大小都设置为 5(英寸)* 4(英寸)。但是为什么当我更改dpi 时,大小会发生变化?

如何理解heightwidthunitdpi之间的关系?

或者如何将这四个参数转换成像素单位,我比较容易理解?

【问题讨论】:

  • "如何将这四个参数转换成像素单位" 设置units = "in",则可以将height乘以dpi或width乘以dpi为获取垂直和水平的像素。 Wikipedia on dpi.
  • 我认为必须根据物理大小设置大小,以确保字体大小保持一致。如果仅以像素为单位设置大小,则一旦将文本放在具有特定物理大小的页面上,您将不知道文本的大小。如果您将两个示例图以相同的物理大小放在页面上,则字体大小应该相同。
  • @Marius,我同意你的看法。我也更喜欢物理尺寸而不是像素。它只是让我感到困惑,即使我设置了 5 * 4 的物理尺寸,通过更改不是物理尺寸参数的 dpi,.png 绘图尺寸也会发生变化。

标签: r ggplot2 dpi


【解决方案1】:

要了解为什么 DPI 很重要,请考虑以下两个图:

ggsave(filename = "foo300.png", ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23) + theme_bw(base_size = 10),
       width = 5, height = 4, dpi = 300, units = "in", device='png')
ggsave(filename = "foo150.png", ggplot(mtcars, aes(x=wt, y=mpg)) +
           geom_point(size=2, shape=23) + theme_bw(base_size = 10),
       width = 10, height = 8, dpi = 150, units = "in", device='png')

生成的文件具有相同的像素尺寸,但每个文件的字体大小不同。如果将它们放置在与ggsave() 调用相同的物理大小的页面上,则字体大小将是正确的(即ggsave() 调用中的10)。但是如果你把它们放在错误的物理大小的页面上,字体大小就不会是 10。为了在增加 DPI 的同时保持相同的物理大小和字体大小,你必须增加图像中的像素数。

【讨论】:

  • 您能否详细说明*将它们放在与它们的物理尺寸相同的页面上*,我有点困惑...假设我在系统查看器中查看这两个图像,这将呈现它们在相同大小的窗口中。我应该减少一个窗口,成为另一个窗口的一半吗?谢谢!
  • @Matifou:如果您在保存后查看图像文件,我认为您希望它们在相同大小的窗口中,因为那样它们在您的显示器上将具有相同的“物理大小”。 DPI 是关于图像在文档中实际打印出来后的样子,因此在计算机上查看时很难理解。
  • @Marius 你能告诉我我们是否可以增加 R 中的设备大小吗?我在这里发布了一个 Q stackoverflow.com/questions/64756969/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2018-12-28
相关资源
最近更新 更多