【问题标题】:Plot elements appear outside plot region with cairo_pdf() but not pdf()绘图元素出现在绘图区域之外,带有 cairo_pdf() 但不是 pdf()
【发布时间】:2018-02-22 10:59:14
【问题描述】:

我对图形设备等不太了解。我想做的只是将绘图保存为 PDF 并嵌入字体。

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

我的问题是:

  • 这是可重现的吗?如果是,这是一个错误吗?在哪里?
  • pdf()-plots 相比,cairo_pdf()-plots 看起来是否有任何其他情况?使用cairo_pdf()还有其他缺点吗?

以下是整个 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)

【问题讨论】:

  • 当我运行您的代码时,pdf 中的图像会显示您请求的整个范围内的数据 - 从 x 和 y 方向的 0 到 1。 IE。我不会复制你的结果。
  • 下轴下方或右轴右侧没有任何点?截图只是整个 PDF 的一个细节。
  • 正确。在您指定零到一的区域之外没有任何内容。如果您想查看更多数据,请尝试xlim = c(-3,3), ylim = c(-3,3)
  • 谢谢。但这并不能解决我的问题。我的问题是:为什么cairo_pdf() 的结果与pdf() 的结果不同?

标签: r pdf graphics cairo


【解决方案1】:

此错误已在 R 3.6.0 中修复。

来自新闻:

cairo_pdf 图形设备(和其他基于 Cairo 的设备)现在可以正确剪辑到右侧和底部边框。
Lee Kelvin 报告了一个像素偏差错误。

【讨论】:

    猜你喜欢
    • 2015-11-10
    • 2012-07-10
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多