【问题标题】:Plot knitting error : "unable to start png() device"绘制编织错误:“无法启动 png() 设备”
【发布时间】:2018-09-24 16:56:04
【问题描述】:

我正在使用 Rmarkdown 制作精美的文档(例如使用 LaTex),但有一个问题我无法解决。

我正在通过以下方式打印图表:

```{r p(s|r)}

pleft=function(x, p=0.5){dnorm(x, mean=35, sd = 10)*p/(dnorm(x, mean=35, sd 
= 10)*p+dnorm(x, mean=65, sd = 10)*(1-p))}
pright=function(x, p=0.5){dnorm(x, mean=65, sd = 10)*(1-p)/(dnorm(x, 
mean=35, sd = 10)*p+dnorm(x, mean=65, sd = 10)*(1-p))}

pleft50= function(x){pleft(x, 0.5)}
pright50=function(x){pright(x, 0.5)}

curve(pleft50, from=-10, to=110, xlab="Firing Rate r (Hz)", ylab="p(s|r)", 
col="red", lwd=2)
curve(pright50, from=-10, to=110, xlab="Firing Rate r (Hz)", ylab="p(s|r)", 
col="blue", lwd=2, add=TRUE)
legend("right", legend = c("p(Left|r)","p(Right|r)"), col=c('red', 'blue'), 
lwd = 2)
title("Posteriors")

```

这在每个先前的代码块和文档中都以相同的方式工作,但是现在当我编织文档时它会引发此错误:

png(..., res = dpi, units = "in") 中的错误:无法启动 png() 设备调用:... in_dir -> plot2dev -> do.call -> -> png 另外: 警告信息: 1: 在 png(..., res = dpi, units = "in") : 无法打开文件 'ExSheet4_files/figure-html/name of my chunk-1.png' 2: 在 png (..., res = dpi, units = "in") : 打开设备失败

我已经尝试过任何我知道的方法,它会在调用 curve(pleft50,... 时立即提升它。

谢谢你的回答,对不起我的英语!

【问题讨论】:

  • 你有没有用其他程序打开过 pdf 文件?
  • 不,只有 Rstudio 和 Chrome

标签: r png r-markdown


【解决方案1】:

它不喜欢第一行中的p(s|r)——它试图创建一个用于写入的文件,但在那里失败了。如果您删除它,例如:

---
title: "Untitled"
date: "April 14, 2018"
output:
  html_document: default
  word_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
pleft=function(x, p=0.5){dnorm(x, mean=35, sd = 10)*p/(dnorm(x, mean=35, sd 
= 10)*p+dnorm(x, mean=65, sd = 10)*(1-p))}
pright=function(x, p=0.5){dnorm(x, mean=65, sd = 10)*(1-p)/(dnorm(x, 
mean=35, sd = 10)*p+dnorm(x, mean=65, sd = 10)*(1-p))}

pleft50= function(x){pleft(x, 0.5)}
pright50=function(x){pright(x, 0.5)}

curve(pleft50, from=-10, to=110, xlab="Firing Rate r (Hz)", ylab="p(s|r)", 
col="red", lwd=2)
curve(pright50, from=-10, to=110, xlab="Firing Rate r (Hz)", ylab="p(s|r)", 
col="blue", lwd=2, add=TRUE)
legend("right", legend = c("p(Left|r)","p(Right|r)"), col=c('red', 'blue'), 
lwd = 2)
title("Posteriors")
```

你明白了:

【讨论】:

  • 太棒了!如果您可以勾选答案,将不胜感激:)
  • 只是为了理解:为什么这在这里失败了,但它在另一个标题的前一个块中工作(例如“p(r)”)?
  • 我认为是|,但需要进行更多测试才能确定。
  • 完成!谢谢。
  • 不错的收获。我正在查看块名称,发现它很好奇,但没有注意到它,因为未能为我写入设备通常意味着我在锁定文件的程序中打开了文件。
【解决方案2】:

当您在命名代码块中编织图时,会发生所描述的错误,并且在编织过程中块的名称不会导致有效的路径名。

也就是说,在编织过程中,绘图被写入包含代码块名称的临时路径,因此该名称应仅包含对路径名称有效的字符,而对于使用的字符 @ 则不正确987654321@。也应避免在chunk names 中使用白色字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多