绘图元素出现在带有 cairo_pdf() 但不是 pdf() 的绘图区域之外
Plot elements appear outside plot region with cairo_pdf() but not pdf()
我不太了解图形设备等。我只想将绘图保存为 PDF 并嵌入字体。
我为此使用 cairo_pdf()
,但我注意到有时绘图元素打印在 box/plot 区域之外(参见 PDF 的屏幕截图)。我可以在不同的 Windows 机器、不同的 R 版本上重现这个问题,使用包 cairoDevice 或 Cairo,例如 lines()
。但是通过 pdf()
保存的图看起来不错。
我的问题是:
- 这可以重现吗?如果是,这是一个错误吗?
- 是否还有其他情况
cairo_pdf()
-plots 与 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)
此错误已在 R 3.6.0 中修复。
来自新闻:
The cairo_pdf
graphics device (and other Cairo-based devices) now clip correctly to the right and bottom border.
There was an off-by-one-pixel bug, reported by Lee Kelvin.
我不太了解图形设备等。我只想将绘图保存为 PDF 并嵌入字体。
我为此使用 cairo_pdf()
,但我注意到有时绘图元素打印在 box/plot 区域之外(参见 PDF 的屏幕截图)。我可以在不同的 Windows 机器、不同的 R 版本上重现这个问题,使用包 cairoDevice 或 Cairo,例如 lines()
。但是通过 pdf()
保存的图看起来不错。
我的问题是:
- 这可以重现吗?如果是,这是一个错误吗?
- 是否还有其他情况
cairo_pdf()
-plots 与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)
此错误已在 R 3.6.0 中修复。
来自新闻:
The
cairo_pdf
graphics device (and other Cairo-based devices) now clip correctly to the right and bottom border.
There was an off-by-one-pixel bug, reported by Lee Kelvin.