rmarkdown错误与ggplot和png

xzv2uavs  于 2023-04-03  发布在  其他
关注(0)|答案(6)|浏览(140)

我尝试过(徒劳)在Rmarkdown中使用ggplot生成一个图表。代码如下:

```{r,echo=FALSE}
#fig.width=12,fig.height=6
panel2$PlotSize<-round(log(panel2$BSFA0200),0)- min(round(log(panel2$BSFA0200),0))+1# set size of dots
panel2$PlotSize[panel2$PlotSize==-Inf]<-NA
panel2$PlotColour<-ifelse(panel2$PlotSize<7,1,panel2$PlotSize)
panel2$PlotSize<-as.factor(panel2$PlotSize)
panel2$PlotColour<-as.factor(panel2$PlotColour)

g1<-ggplot(data=panel2,aes(x=NFR,y=PROF7*100,size=PlotSize,colour=PlotSize))+ geom_point()

g1

在编结这工程罚款,但当执行一个Rmd文件(无论是作为html或pdf)我总是得到这个错误消息

processing file: 1Profti_model.Rmd
|.. | 4%
ordinary text without R code

|..... | 8%
label: setup (with options)
List of 1
$ include: logi FALSE

|........ | 12%
ordinary text without R code

|.......... | 15%
label: unnamed-chunk-1 (with options)
List of 3
$ echo : logi FALSE
$ warning: logi FALSE
$ message: logi FALSE

Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

filter, lag

The following objects are masked from 'package:base':

intersect, setdiff, setequal, union

Loading required package: zoo

Attaching package: 'zoo'

The following objects are masked from 'package:base':

as.Date, as.Date.numeric

|............ | 19%
inline R code fragments

|............... | 23%
label: unnamed-chunk-2 (with options)
List of 1
$ echo: logi FALSE

|.................. | 27%
ordinary text without R code

|.................... | 31%
label: unnamed-chunk-3 (with options)
List of 1
$ echo: logi FALSE

Quitting from lines 98-109 (1Profti_model.Rmd)
Error in png(..., res = dpi, units = "in") : unable to start png() device
Calls: ... in_dir -> plot2dev -> do.call -> -> png
In addition: Warning messages:
1: Removed 55 rows containing missing values (geom_point).
2: In png(..., res = dpi, units = "in") :
unable to open file '1Profti_model_files/figure-html/unnamed-chunk-3-1.png' for writing
3: In png(..., res = dpi, units = "in") : opening device failed

Execution halted


我也试着解决这个问题,将图表保存在png中,然后将其作为图片加载。也没有结果(参见[Error with loading png in Rmd file](https://stackoverflow.com/questions/34136738/error-with-loading-png-in-rmd-file))
谢谢你的帮忙
更新:
根据你们中一些人的建议,我添加了一个不同的块名,并在我的数据上复制了Davit的代码(见更新的代码)。不幸的是,错误仍然存在。有趣的是,knitr不能写png,但可以在代码所在的同一个文件夹中写csv(我测试了它)。
最后,我测试了在我的C驱动器上运行同样的代码,(惊喜!)它工作正常。然而,这对我来说不是很有效,因为我不想依赖于特定的机器,我需要与其他人分享这项工作(所以网络驱动器是必须的)。此外,所有其他包/代码在网络驱动器上都能正常工作,只有这个png()似乎是一个问题。
谢谢你的帮助!---标题:新文档作者:我的输出:html_document ---
#.libPaths("D:/xxxx/packages")
require(ggplot2)

 panel2 <- data.frame(BSFA0200 = rnorm(100),
                        NFR = rnorm(100),
                        PROF7 = rnorm(100))

panel2$PlotSize<-round(log(panel2$BSFA0200),0)- min(round(log(panel2$BSFA0200),0))+1# set size of dots
panel2$PlotSize[panel2$PlotSize==-Inf]<-NA
panel2$PlotColour<-ifelse(panel2$PlotSize<7,2,panel2$PlotSize)

write.csv(panel2[1:100,c('BSFA0200',"NFR","PROF7")],file="test.csv")

g1 <- ggplot(data = panel2,
             aes(x = NFR,
                 y = PROF7 * 100,
                 size = factor(PlotSize),
                 colour = factor(PlotSize)
                 ))

g1 + geom_point()

错误输出:

Loading required package: ggplot2

Quitting from lines 9-32 (test.Rmd)
Error in png(..., res = dpi, units = "in") : unable to start png() device
Calls: ... in_dir -> plot2dev -> do.call -> -> png
In addition: Warning messages:
1: Removed 35 rows containing missing values (geom_point).
2: In png(..., res = dpi, units = "in") :
unable to open file 'test_files/figure-html/prova-1.png' for writing
3: In png(..., res = dpi, units = "in") : opening device failed
Execution halted


我的knitr版本是1.11(应该是最新的),R版本是3.2.2

R.Version()
$platform
[1] "i386-w64-mingw32"

$arch
[1] "i386"

$os
[1] "mingw32"

$system
[1] "i386, mingw32"

$status
[1] ""

$major
[1] "3"

$minor
[1] "2.2"

$year
[1] "2015"

$month
[1] "08"

$day
[1] "14"

$svn rev
[1] "69053"

$language
[1] "R"

$version.string
[1] "R version 3.2.2 (2015-08-14)"

$nickname
[1] "Fire Safety"

ao218c7q

ao218c7q1#

我也收到了这个消息。我的问题是文件路径太长。我的R markdown文件在太多的子文件夹中,并且我的R markdown文件的名称太长。一旦我减少了文件路径的长度,问题就解决了。我希望这对你有用。

rqcrx0a6

rqcrx0a62#

我曾经遇到过同样的问题。下面的代码可以工作。你要么有错误的头,要么没有调用包:很难说,因为你没有提供这些信息。另外,请下次发布示例数据。
这里是完整的代码,工作(至少对我来说)。如果它不运行在您的机器上,张贴您的数据和完整的Rmd脚本,我会尽力帮助。

---
title: New Document
author: Me
output:
  html_document
---

```{r,echo=FALSE, results='asis', message = FALSE, error = FALSE, warning= FALSE}
require(ggplot2)

panel2 <- data.frame(BSFA0200 = rnorm(100),
                      NFR = rnorm(100),
                      PROF7 = rnorm(100),
                      PlotSize = factor(rep(1:10, 10)),
                      PlotColour = factor(1:100))

g1 <- ggplot(data = panel2,
             aes(x = NFR,
                 y = PROF7 * 100,
                 size = PlotSize,
                 colour = PlotSize))

g1 + geom_point()

![](https://i.stack.imgur.com/jCdVF.png)
v9tzhpje

v9tzhpje3#

我也收到了这个错误;我通过将代码移动到它自己的块中来生成令人不快的图形来解决它。

hl0ma9xz

hl0ma9xz4#

我最近遇到了类似的问题。在我的情况下,问题是防病毒软件阻止**Rscript.exe**,而它试图在编织时处理文件,并且没有创建PNG文件。所以有时候暂时禁用防病毒并检查是否解决了问题是有用的。

ssgvzors

ssgvzors5#

我也遇到过同样的错误。我知道这是与路径有关的问题,但无法解决它。查看这里的评论,我尝试关闭软件并重新打开它。它很快就工作了。如果这对某人有帮助的话!

htrmnn0y

htrmnn0y6#

对我来说,这个错误发生在使用distill r包和jekyl渲染我的页面之后。我没有机会检测原因。但是在阅读this issue here之后,我解决了它。显然,jekyll是由于“Invalid byte sequencece UTF-8...“导致页面构建失败的主要原因。在我的网站根目录中添加一个空的.nojekyll文件后,这个问题自动解决了。只需打开一个文本编辑器,将emty文件保存为.nojekyll,并将pushyour更改保存到github。祝你好运。

相关问题