繁体   English   中英

RStudio绘图窗格处于活动状态时,ggsave()中的绘图比例不同

[英]Scaling of plot in ggsave() different when RStudio plot pane is active

我无法提供可复制的示例,但是我想问一下ggsave()函数的奇怪行为:我遇到以下问题:

  1. 我通过将绘图分配给变量来创建一个ggplot,假设p
  2. 我评估p并且-应当如此-该图显示在RStudio的图窗格中。
  3. 我的下一个调用是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
  }
...

这意味着如果用户未指定尺寸:

  1. 如果根本没有活动的图形设备,则默认尺寸为7 x 7;

  2. 如果有至少一个活动的图形设备,请使用最后一个的尺寸(乘以scale ,默认为1)。

RStudio的绘图窗格是图形设备。 因此, ggsave的行为会根据是否存在任何内容而有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM