[英]Scaling of plot in ggsave() different when RStudio plot pane is active
我无法提供可复制的示例,但是我想问一下ggsave()
函数的奇怪行为:我遇到以下问题:
p
p
并且-应当如此-该图显示在RStudio的图窗格中。 ggsave(plot = p, filename = "plot.pdf")
,该图被写入plot.pdf,R给了我控制台上所写图的尺寸。 奇怪的是:当RStudio绘图窗格处于活动状态(即,RStudio图形设备处于打开状态)时,由ggsave()
在步骤3中编写的绘图尺寸与未打开RStudio图形设备时不同。 因此,书写图的比例不正确。 换句话说:根据步骤2的执行,步骤3会产生不同的结果。有人知道为什么会这样吗? 我认为ggsave()
完全独立于任何RStudio设备。 还是只在我的机器上发生?
这是我的sessionInfo()
:
R version 3.4.1 (2017-06-30)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6
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.4/Resources/lib/libRlapack.dylib
locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_2.2.1 scales_0.4.1 data.table_1.10.4
loaded via a namespace (and not attached):
[1] ggrepel_0.6.12 Rcpp_0.12.12 digest_0.6.12 grid_3.4.1 plyr_1.8.4 gtable_0.2.0 rlang_0.1.2 lazyeval_0.2.0
[9] labeling_0.3 RColorBrewer_1.1-2 tools_3.4.1 munsell_0.4.3 compiler_3.4.1 colorspace_1.3-2 sciplot_1.1-1 tibble_1.3.3
在上面扩展Andrey Kolyadin的评论...
从ggsave()文档的“宽度,高度”中,绘图大小以单位(“英寸”,“厘米”或“毫米”)为单位。 如果未提供,则使用当前图形设备的大小。
如果我们深入研究ggsave
背后的代码,则有一个片段说明:
if (any(is.na(dim))) {
if (length(grDevices::dev.list()) == 0) {
default_dim <- c(7, 7)
}
else {
default_dim <- grDevices::dev.size() * scale
}
...
这意味着如果用户未指定尺寸:
如果根本没有活动的图形设备,则默认尺寸为7 x 7;
如果有至少一个活动的图形设备,请使用最后一个的尺寸(乘以scale
,默认为1)。
RStudio的绘图窗格是图形设备。 因此, ggsave
的行为会根据是否存在任何内容而有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.