gpt4 book ai didi

r - 使用 ggsave 和 Rscript 时如何阻止 R 创建空的 Rplots.pdf 文件

转载 作者:行者123 更新时间:2023-12-03 10:42:46 24 4
gpt4 key购买 nike

我有一个使用 ggsave 保存一些图的 R 脚本。当我从命令行运行脚本时,它不仅会保存我的绘图,还会保存一个空的 Rplots.pdf 文件。如何防止 R 创建这个不必要的文件?

这是一个重现错误的示例脚本:

#!/usr/bin/env Rscript

# Code that creates unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
ggsave('example.png', my.plot)

以下所有运行脚本的方法都会创建不必要的文件:
Rscript script.R
Rscript --vanilla script.R
chmod a+x script.R
./script.R

此外,当我从交互式 session 中获取代码时,会打开一个不必要的空白 R 图形设备窗口。

此外,如果我使用以下更详细的代码代替 ggsave,则不会遇到这些问题:
#!/usr/bin/env Rscript

# Code that does NOT create unnecessary Rplots.pdf file
library(ggplot2)
my.data <- data.frame(x = 1:10, y = 1:10)
my.plot <- qplot(x, y, data = my.data)
png(file = 'example.png')
print(my.plot)
dev.off()

这是我的 session 信息(无论是运行 Rscript 还是交互方式都相同):
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] methods stats graphics grDevices utils datasets base

other attached packages:
[1] ggplot2_0.9.3.1

loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 grid_3.0.1
[5] gtable_0.1.2 labeling_0.1 MASS_7.3-26 munsell_0.4
[9] plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 reshape2_1.2.2
[13] scales_0.2.3 stringr_0.6.2

5年后更新 (2018-08-02) : 这个问题来来去去。 ggplot2 2.2.1 不会产生空文件,ggplot2 3.0.0 会产生,ggplot2 团队目前正在努力解决这个问题。有关发展历史,请参阅 ggplot2 问题 #1326 , #2363 , #2758 , 和 #2787 .

最佳答案

如果您查看 ggsave 中宽度和高度参数的默认值,您会看到它们是 par("din")[1]par("din")[2] .如果你在控制台中运行它,你会看到它打开了一个图形窗口,如果一个还没有打开的话。

这是有道理的,因为为了获得以英寸为单位的设备宽度/高度,您需要一个实际的设备。我想有人可能会争辩说 par("din")如果没有设备打开,应该返回错误,在这种情况下,哈德利肯定会写 ggsave不同。

确实,来自 ?par :

If the current device is the null device, par will open a new device before querying/setting parameters.



因此,指定宽度/高度将防止伪设备打开。

关于r - 使用 ggsave 和 Rscript 时如何阻止 R 创建空的 Rplots.pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com