R错误:保存ggplot PDF时出错。

5

当我尝试使用以下代码将使用ggplot制作的图表保存为pdf时:

library(ggplot2)

file = "/data/mda/20150630-1Mb-full_comparison-low_depth_hTERT/result/comparison_figure/SD_rank_custom.csv"
figure_file = "/data/mda/20150604-1Mb-full_comparison-low_depth_hTERT/result/comparison_figure/SD_rank_custom.pdf"

sd_data <- as.data.frame(read.csv(file, header=TRUE))

# generate box plot
ggplot(
    data=sd_data,
    aes(
        x=Experiment, 
        y=SD
    )
)+  
theme_bw() + #use bw theme
geom_boxplot(outlier.shape = NA) + #hide outlier points
geom_jitter() + 
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))   

ggsave(
  filename=figure_file,
  width=10,
  height=10
)

我遇到了如下错误:

grDevices::pdf(..., version = version) 错误:

无法打开文件 'file.pdf'

Calls: ggsave -> device ->

Execution halted

我认为我的R版本最近更新到3.2.0,而我已确认在v3.1.1中可以正常工作,因此我认为这是与版本有关的问题。我还确认我可以将CSV文件写入目录。
有什么想法可以解决这个问题吗?

1
请问您能否贴出您正在使用的代码? - Paulo MiraMor
2
你是否有当前工作目录的写入权限?getwd()返回什么? - MrFlick
以上两个评论已在帖子中得到回答。 - Kaston
file.info("/data/mda/20150604-1Mb-full_comparison-low_depth_hTERT/result/comparison_figure/")$isdir 返回的是 TRUE 吗?这似乎只是一个文件权限问题。读取和写入是不同的。您能否向该目录写入? - MrFlick
你打开了PDF吗? - Hugh
遇到了相同的问题,将文件重命名后问题得到解决。 - Remy
7个回答

3

我也曾遇到过相同的问题,后来发现我在该目录下已经保存了一个同名对象,但它似乎没有被覆盖。


3

我认为您试图写入一个不存在的文件夹,据我所知,grDevices不允许这样做。其他人似乎遇到了类似的问题。

我在R 3.1.1和3.2.1中都尝试了您的代码 - 除非预先创建目录,否则它们都会给出相同的错误。

您可以尝试添加以下代码行:

dir.create(file.path(dirname(figure_file)))

它将为您创建目录。


该目录确实存在,我能够将 .csv 文件写入其中,但是由于某种原因无法写入 pdf 文件。不,pdf 文件没有被打开。我刚刚从系统管理员那里得知我的写入权限存在一些奇怪的问题,所以正在等待解决。感谢您的回复。 - Kaston

1
当我的文件名太长时,我遇到了相同的错误 - 因此在Windows中的路径名超过了允许的字母限制。缩短文件名解决了这个问题。

1

我在运行一个for循环来创建包含图表的多个pdf文件时,遇到了这个错误。

对于我来说,当我简单地关闭之前打开以检查输出的pdf文件时,错误被解决了。R会抛出这个错误,因为我已经打开了该文件,所以无法覆盖它。这是另一个可能导致此错误的原因。


0

Error in grDevices::pdf 的原因之一是写入权限不足。适当的写入权限应该可以解决这个问题。- chmod 777 -R dirname


0
T遇到了同样的问题,并发现here()没有指向R脚本文件所在的正确目录。解决方法是:要么尝试将here()指向正确的目录,要么关闭/退出R Studio并直接在R Studio中打开脚本,即在全新的R Studio中打开,这样here()将自动指向与脚本相同的目录。

0

我曾经遇到过同样的问题,后来通过移动工作目录解决了它,因为它误认为自己在system32中。

如果你正在使用Rstudio

  • 会话
  • 设置工作目录
  • 桌面

然后要么创建一个新文件夹,要么选择一个现有的文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接