ggplot пишет в pdf и png с очень разными размерами

#r #pdf #ggplot2 #png

Вопрос:

Я создаю сетку с 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 выглядели одинаково. Известна ли первопричина этой проблемы? Я был бы очень признателен за предложения по настройкам, которые я должен попытаться изменить, чтобы сделать два экспорта идентичными.

Искренне и с большой благодарностью заранее

Томас Филипс

Комментарии:

1. Боже, что за бардак. Это действительно таинственно. Я не думаю, что смог бы решить эту проблему самостоятельно.

Ответ №1:

Я подозреваю, что это как-то связано с установкой аргументов width и height для каждого параметра и согласованием 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))

 

Создано 2021-07-12 пакетом reprex (v2.0.0)

png
png

pdf — конвертирован в jpg для возможности загрузки

pdf - конвертирован в jpg для возможности загрузки

Комментарии:

1. Работает как заклинание. Я установил как pdf, так и png на 8 дюймов x 8 дюймов, а разрешение-144, и два выхода по существу идентичны. Большое спасибо.