【问题标题】:Error : Unable to start png() device错误:无法启动 png() 设备
【发布时间】:2022-05-17 19:45:52
【问题描述】:

我正在使用 Windows。尝试在 png 设备上绘制图形时,失败并出现错误。

我的代码:

png("C:\\plot1.png", width = 480, height = 480, units = "px", bg = "white")

par(mar= c(4, 4, 2, 1))

hist(pwrcon$Global_active_power,col = "red", main = "Global Active Power", xlab = "Global Active Power (kilowatts)")

dev.off()

错误:

Error in png("C:\\plot1.png", width = 480, height = 480, units = "px",  : 
  unable to start png() device
In addition: Warning messages:
1: In png("C:\\plot1.png", width = 480, height = 480, units = "px",  :
  unable to open file 'C:\plot1.png' for writing
2: In png("C:\\plot1.png", width = 480, height = 480, units = "px",  :
  opening device failed

谁能帮我解决这个问题?

提前致谢

【问题讨论】:

  • @R.Schifini,您是否在编辑时添加了额外的反斜杠?如果是这样(并且如果您在下面的诊断是正确的),那么您已经使这个问题变得非常混乱......
  • @BenBolker,我只格式化了代码。我同意这令人困惑,但我记得只看到一个反斜杠。看来问题是通过重新安装解决的。我会投票赞成删除整个问题,因为它似乎没有进一步的用途。 (编辑:我什至复制了原始路径和文件名)
  • 好的,投票结束。
  • 是的,这个错误很可能是由于我们尝试写入png的filename中的一个错误或不存在的文件夹目录引起的。我们计划使用的文件夹应该提前创建(使用例如if(!dir.exist(folder_name) dir.create(folder_name))。

标签: r


【解决方案1】:

我无法解释为什么,但我曾经发现当我的 RStudio 项目保存的文件夹路径是一个很长的字符串时,png 设备会失败。当我缩短文件夹路径时,它起作用了。

【讨论】:

  • 不知道现在是不是还是这样,但是多年来,Windows路径+文件名的字符数不能超过255个左右。
【解决方案2】:

我在处理 r-markdown 文档时遇到了同样的问题。

我的问题与查看块输出内联有关。当我切换到在控制台中查看块输出时,它工作得很好。

【讨论】:

    【解决方案3】:

    我也收到了这个错误:“错误(函数(文件名=“Rplot%03d.png”,宽度= 480,高度= 480,: 无法启动 png() 设备”

    我一直在处理的 .Rmd 文件的名称包含一些非英语字符,因此删除它们对我来说很有帮助。

    【讨论】:

      【解决方案4】:

      在 PC 上遇到了同样的问题。问题是有一个启用了“安全文件”的防病毒程序,它阻止了 Rstudio 创建图形文件。杀毒软件在拦截时没有显示任何信息,所以实际上并没有给你任何线索。

      【讨论】:

      • 你是怎么想出来的?
      【解决方案5】:

      文件名C:\plot1.png 包含一个反斜杠 (\),它是一个转义字符。这会导致您遇到的错误。

      将其更改为斜线 (/)

      png("C:/plot1.png", width = 480, height = 480, units = "px", bg = "white")
      

      或加倍反斜杠 (\\):

      png("C:\\plot1.png", width = 480, height = 480, units = "px", bg = "white")
      

      【讨论】:

      • 我在程序中使用“C:\\”。尝试用“C:/”替换。还是一样的错误。
      • 我尝试重新安装 rstudio,它确实有帮助。现在代码似乎可以工作了。谢谢 R.Schifini。
      • 我今天遇到了 exact 同样的问题。问题是我尝试了两件事来纠正,所以我不知道哪一个有效:在我的here语句'here :: i_am(path =“inst / A.Rmd”)'中,我错误地使用了以前的版本那里的名字。但是,文档很好地编织到 html。其次,我直接将项目名称和 RMarkdown 文件名分别缩短为“A”。我担心路径链接,因为我看到 .png 文件直接存储在一个子目录中,名称非常长,基于 RMarkdown 文件名。一个或两个都解决了问题。
      【解决方案6】:

      在 Windows 10 中也遇到了类似的问题,我的 R 脚本与 RScript.exe 放在同一文件夹中,使用包 ggplot2。但是我收到了could not open file 'Rplot001.png'的消息。

      终于找到了两种解决问题的方法:

      1. 将 R 脚本移动到除 RScript.exe 所在的文件夹之外的任何其他文件夹。
      2. 先使用命令setwd("YourPath")设置工作目录,再做其他事情。

      【讨论】:

        【解决方案7】:

        我收到了同样的错误信息。结果发现路径名有错别字。 除了这些问题,从 CRAN 重新安装 ggplot 和 tydiverse 似乎对某些人有用,请参阅here

        【讨论】:

          【解决方案8】:

          我遇到了相同类型的错误,无论是 png 还是 jpg 设备都无法从 ggplot2 的 ggsave 命令打开。该路径包含一个 Å 符号,该符号在插入描述目录的变量时存储为 \305。

          setwd(path) 后跟 ggsave(filename)for 这个目录变量在这种情况下确实有效,但 ggsave(paste(path, filename, sep="/") 没有。

          在我的情况下,将 Å 替换为 A 可以解决该错误。

          【讨论】:

            【解决方案9】:

            另一个问题可能是您的 Rstudio 可能已更新。我在 R-markdown 中工作时遇到了这个问题。在常规 R 脚本中尝试代码仍然有效。尝试将降价保存为新文件。这应该可以暂时解决问题。

            不知道长期解决方案。

            【讨论】:

              【解决方案10】:

              我今天在使用 RMarkdown 笔记本时也遇到了这个错误(昨天还不错)。如果我编辑一个块然后尝试运行它,我会收到此错误。如果我然后保存笔记本并再次尝试该块它可以工作。我的工作目录是 OneDrive 文件夹。我想知道这是否是个问题。

              每次编辑后都必须保存并不理想,而是一种解决方法。

              【讨论】:

                【解决方案11】:

                我添加了“dev.off() “剧情之前,问题解决了,可能是之前的设备还没关机。

                【讨论】:

                  【解决方案12】:

                  我收到了上面提到的错误

                  Error in (function (filename = "Rplot%03d.png", width = 480, height = 480, : unable to start png() device Calls: <Anonymous> ...

                  我的问题是我的 R-markdown 文档的一个 R 代码块中的 fig.width 选项以及当输出呈现为 html 文档时。与其他代码块中的其他 fig.width 选项相比,fig.width 太大。再次,仅当我尝试将其呈现为 html 文档而不是 PowerPoint 演示文稿时才观察到这种情况。

                  【讨论】:

                    【解决方案13】:

                    这已经解决了,但我想如果它能让某人的生活更轻松,我可能会添加我的答案。 当然,您可以将 wd 设置为一些短路径(或没有特殊字符的路径):setwd("c/Users/John/My_r_project) 但是我在工作中使用 R,因此我的 R 项目保存在一个具有超长路径的公共驱动器上,并且我的工作目录必须很长。一种解决方法是:

                    ```{r setup, include=FALSE}
                    knitr::opts_chunk$set(
                        fig.path = "c/Users/John/My_r_project/figures" #make sure you create the folder first in Windows
                    )
                    ```
                    

                    当然,您也可以在那里添加其他选项,例如:dpi = 300echo = FALSE、...

                    【讨论】:

                      【解决方案14】:

                      我在 Jupyter notebook 中运行 R 时遇到了同样的问题。我做了很多谷歌搜索并尝试了所有可能的方法。它对我有用的唯一方法是重新启动内核。但是,如果您已经训练了需要很长时间的模型,那么重新启动内核并不是一个好的解决方案。

                      【讨论】:

                        【解决方案15】:

                        如果您尝试保存 PNG 图像,请确保您有权在目标文件夹中创建文件。我在未向用户授予完全访问权限的公司网络上看到此错误。

                        【讨论】:

                          【解决方案16】:

                          错误通常表示文件不能被过度访问或覆盖,意味着文件正在使用中文件路径不可写.

                          在第一种情况下,只需关闭您打开的文件(例如,在图像预览中),然后重试。

                          【讨论】:

                            【解决方案17】:

                            我看到这个消息,发现这是因为png文件被其他软件或进程占用了。

                            所以关闭软件或进程,然后重启rstudio。

                            【讨论】:

                              【解决方案18】:

                              我曾经也遇到过这个问题。对我来说,第一个解决方案有效,但您可能还想检查其他两个选项。

                              1. 重新启动 R 会话。选项卡会话 > 重启 R (Ctrl + Shift + F10)
                              2. 使用 getwd() 检查工作目录并根据需要使用 setwd(path) 进行更改
                              3. 不要忘记使用 dev.off() 关闭设备

                              【讨论】:

                              • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                              猜你喜欢
                              • 2018-09-24
                              • 1970-01-01
                              • 2021-09-19
                              • 1970-01-01
                              • 1970-01-01
                              • 2018-11-29
                              • 2016-01-01
                              • 1970-01-01
                              • 2016-02-20
                              相关资源
                              最近更新 更多