ggplot 以非常不同的大小写入 pdf 和 png

ggplot writes to pdf and png with very different sizes

我创建了一个包含 4 个图的网格,然后将其写入 pdf 和 png。由于我不明白的原因,图表和字体的绘制方式不同(png 格式比 pdf 格式小得多)。我使用的命令是:

pdf("Cusum Page 1.pdf")
  grid.arrange(log_return_plot, tracking_error_plot, 
               ir_graph, excess_vol, 
               layout_matrix = rbind(c(1, 2), c(3, 4)))
dev.off()

png(filename = "Cusum Page 1.png", width = 800, height = 800, units = "px",
    pointsize = 12, bg = "white", res = NA, family = "", restoreConsole = TRUE,
    type = c("windows", "cairo", "cairo-png"), antialias = "d")   

  grid.arrange(log_return_plot, tracking_error_plot, 
               ir_graph, excess_vol, 
               layout_matrix = rbind(c(1, 2), c(3, 4)))

dev.off()

我尝试更改和删除 png 调用中的各种选项,但没有成功 - 我只是无法使我的 png 和 pdf 看起来相同。此问题的根本原因是否已知?我非常感谢有关设置的建议,我应该尝试更改这些设置以使两个导出相同。

此致并提前致谢

托马斯·飞利浦

我怀疑这与设置每个选项的 widthheight 参数以及设置 png::res(标称分辨率)和 pdf::pointsize(默认值)有关到 12) 同意。

pdf 尺寸默认为英寸,因此我已将 png 尺寸设置为英寸。

这是解决方案的初步尝试。

library(gridExtra)
library(ggplot2)


pdf("Cusum Page 1.pdf", width = 6, height = 6)
grid.arrange(p1, p2, p3, p4, 
             layout_matrix = rbind(c(1, 2), c(3, 4)))
dev.off()



png(filename = "Cusum Page 2.png", width = 6, height = 6, units = "in",
    pointsize = 12, bg = "white", res = 144, family = "", restoreConsole = TRUE,
    type = c("windows", "cairo", "cairo-png"), antialias = "d")   

grid.arrange(p1, p2, p3, p4, 
             layout_matrix = rbind(c(1, 2), c(3, 4)))

dev.off()

图形


p1 <- 
  ggplot(iris) + 
  geom_histogram(aes(Sepal.Length))

p2 <-  
  ggplot(iris) + 
  geom_histogram(aes(Sepal.Width))

p3 <- 
  ggplot(iris) + 
  geom_histogram(aes(Petal.Length))

p4 <-  
  ggplot(iris) + 
  geom_histogram(aes(Petal.Width))

reprex package (v2.0.0)

于 2021 年 7 月 12 日创建

png

pdf - 转换为 jpg 以启用上传