绘图元素使用cairo_pdf()显示在绘图区域之外,但不是pdf()

时间:2018-02-22 10:59:15

标签: r pdf graphics cairo

我对图形设备等知​​之甚少。我想做的就是将图表保存为PDF并嵌入字体。

我为此使用cairo_pdf(),但我注意到有时会在框/绘图区域之外打印绘图元素(请参阅PDF的屏幕截图)。我可以使用软件包 cairoDevice Cairo 以及例如lines()在不同的Windows机器,不同的R版本上重现该问题。但是通过pdf()保存的图表看起来很好。

我的问题是:

  • 这是可重复的吗?如果是的话,这是一个错误吗?
  • 是否还有其他情况cairo_pdf() - 与pdf()相比,情节看起来有所不同 - 情节?使用cairo_pdf()
  • 还有其他缺点吗?

以下是整个PDF详细信息的屏幕截图,说明了这些差异。请注意,在左图中,轴与某些点重叠。

Screenshot of pdfs saved via cairo_pdf() and pdf()

capabilities("cairo")
#> cairo 
#>  TRUE
set.seed(123456)
N <- 10000
v1 <- rnorm(N)
v2 <- rnorm(N)
v3 <- ifelse(v1 > 1.02 | v2 > 1.02 | v1 < -.02 | v2 < -.02, 2, 1)

cairo_pdf("plot1.pdf")
plot(v1, v2, xlim = 0:1, ylim = 0:1, col = v3, pch = 16)
dev.off()
#> null device 
#>           1

pdf("plot2.pdf")
plot(v1, v2, xlim = 0:1, ylim = 0:1, col = v3, pch = 16)
dev.off()
#> null device 
#>           1

devtools::session_info()
#> Session info ------------------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.4.2 (2017-09-28)
#>  system   x86_64, mingw32             
#>  ui       Rgui                        
#>  language (EN)                        
#>  collate  German_Germany.1252         
#>  tz       Europe/Berlin               
#>  date     2018-03-09                  
#> 
#> Packages ----------------------------------------------------------------------
#>  package   * version date       source        
#>  base      * 3.4.2   2017-09-28 local         
#>  compiler    3.4.2   2017-09-28 local         
#>  datasets  * 3.4.2   2017-09-28 local         
#>  devtools    1.13.5  2018-02-18 CRAN (R 3.4.3)
#>  digest      0.6.15  2018-01-28 CRAN (R 3.4.3)
#>  graphics  * 3.4.2   2017-09-28 local         
#>  grDevices * 3.4.2   2017-09-28 local         
#>  memoise     1.1.0   2017-04-21 CRAN (R 3.4.1)
#>  methods   * 3.4.2   2017-09-28 local         
#>  stats     * 3.4.2   2017-09-28 local         
#>  utils     * 3.4.2   2017-09-28 local         
#>  withr       2.1.1   2017-12-19 CRAN (R 3.4.3)

1 个答案:

答案 0 :(得分:1)

此错误已在R 3.6.0中修复。

来自新闻:

  

cairo_pdf图形设备(以及其他基于Cairo的设备)现在可以正确裁剪到右边框和下边框。
  李·开尔文(Lee Kelvin)报告了一个像素错误。