我无法为此提供可重现的示例,但我想问一下ggsave()
函数的奇怪行为:我遇到以下情况:
p
p
和 - 应该是 - 情节显示在RStudio的情节面板中。ggsave(plot = p, filename = "plot.pdf")
,情节是
写入plot.pdf和R给出了控制台上书面图的尺寸。奇怪的是:当RStudio绘图窗格处于活动状态时(即RStudio图形设备处于打开状态),步骤3中ggsave()
写入的绘图尺寸与没有打开RStudio图形设备时的尺寸不同。因此,书面情节的缩写是关闭的。换句话说:步骤3根据步骤2的执行产生不同的结果。有谁知道为什么会这样?我认为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
答案 0 :(得分:2)
扩展安德烈·科利亚丁的评论......
来自ggsave()文档'宽度,高度绘图大小(单位为" in", " cm",或" mm")。如果未提供,则使用当前图形的大小 。装置'
如果我们深入研究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
的行为会有所不同,具体取决于是否存在任何内容。