【问题标题】:R ggsave outputs different looking pdf and pngR ggsave 输出不同的 pdf 和 png
【发布时间】:2019-05-29 04:21:18
【问题描述】:

我在使用 ggsave 函数保存 pdf 和 png 数字时遇到了一个奇怪的问题。显然,得到的数字看起来有些不同。请看这里:

(左 png,右 pdf)

pdf 文件的网格线以黑色绘制,而 png 文件正确地以灰色显示网格线。我附上了一个最小的例子

library('tidyverse')
set.seed(1)
df <- tibble(x = rnorm(1000))
p <- df %>% ggplot(aes(x)) +
  geom_histogram(bins = 20, fill = 'grey85', col = 'black', alpha = .4) +
  theme_linedraw()
p

ggsave( 'test.pdf', p, device = 'pdf', width = 5, height = 5)
ggsave('test.png',p, device = 'png',  width = 5, height = 5)

会话信息:

R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14.2

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] cowplot_0.9.3   forcats_0.3.0   stringr_1.3.1   dplyr_0.7.6     purrr_0.2.5     readr_1.1.1     tidyr_0.8.1    
 [8] tibble_1.4.2    ggplot2_3.0.0   tidyverse_1.2.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.17     cellranger_1.1.0 pillar_1.3.0     compiler_3.5.1   plyr_1.8.4       bindr_0.1.1     
 [7] tools_3.5.1      jsonlite_1.5     lubridate_1.7.4  nlme_3.1-137     gtable_0.2.0     lattice_0.20-35 
[13] pkgconfig_2.0.1  rlang_0.2.1.9000 cli_1.0.0        rstudioapi_0.7   yaml_2.1.19      haven_1.1.2     
[19] bindrcpp_0.2.2   withr_2.1.2      xml2_1.2.0       httr_1.3.1       hms_0.4.2        grid_3.5.1      
[25] tidyselect_0.2.4 glue_1.3.0       R6_2.2.2         fansi_0.2.3      readxl_1.1.0     modelr_0.1.2    
[31] magrittr_1.5     backports_1.1.2  scales_0.5.0     rvest_0.3.2      assertthat_0.2.0 colorspace_1.3-2
[37] labeling_0.3     utf8_1.1.4       stringi_1.2.4    lazyeval_0.2.1   munsell_0.5.0    broom_0.5.0     
[43] crayon_1.3.4 

【问题讨论】:

  • 不要发布像rm(list = ls()) 这样的代码,除非它对您的问题非常重要。没有人愿意在尝试测试您的代码以帮助您时意外清除他们的工作区。
  • 我无法复制 - 在 Windows 上使用相同的 R 和 ggplot 版本。我的 PNG 和 PDF 看起来都不错。请尝试使用不同的查看器打开 PDF,以确保它不是查看器问题。如果这不起作用,您还可以尝试加载 Cairo Device 包并使用 Cairo Device PDF 功能。
  • 是的,我尝试过使用各种 PDF 阅读器(Acrobat 阅读器、预览和 Skim),结果相同。可悲的是,cairo 设备 pdf 功能也会导致同样的问题。我猜这个问题与 macOS 有关。

标签: r ggplot2


【解决方案1】:

我现在找到了问题所在。通过将theme_linedraw() 替换为theme_bw(),PDF 和PNG 数字是相同的。

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 2017-04-25
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多