无法使用rapache打开文件'Rplots.pdf'

3

我正在尝试使用rApache在浏览器上生成饼图。

我的R代码如下:

library(MASS)                  
school = painters$School  
school.freq = table(school)
pie(school.freq)

当我在浏览器上运行时,出现了这个错误:

rApache 有一些话要跟你说。查看源代码并阅读 HTML 注释。

函数错误(文件 = ifelse(onefile, "Rplots.pdf", "Rplot%03d.pdf")): 无法打开文件 'Rplots.pdf'

你知道为什么会出现这个错误吗?

似乎您没有转储PDF。请参阅?pdf以获取更多信息。 - Paul Hiemstra
1
就像Paul所说的那样,在你的代码开头应该有一个命令pdf(...)(将...替换为文件名等,参见?pdf),告诉R所有后续的图形都要输出到pdf文件中,然后在结尾处应该有dev.off(),它会将文件写入以便打开。 - Michael Dunn
它可以在命令行R中工作,但是在浏览器上使用rapache不显示任何图形。 - mark gill
1个回答

3

默认情况下,pie()和其他绘图命令会尝试将图表写入PDF中。如果您想使用RApache在网页上显示图像,则不应该采用这种方法。您需要告诉RApache您想要做什么。

查看解压RApache源代码时创建的test目录。在那里,您将找到几个脚本,说明如何在网页上呈现PNG图像。例如,在sendBin.R中,您将找到以下代码:

setContentType("image/png")
t <- tempfile()
png(t,type="cairo")
plot(rnorm(10))
dev.off()
sendBin(readBin(t,'raw',n=file.info(t)$size))
unlink(t)
DONE

如果你用你的替换掉plot(rnorm(10))这一行,然后将此文件保存在正确的位置(例如/var/www/R/plot.R),你的图表应该会出现在网页上。
请确保您阅读了RApache文档并进行配置,以便可以从您的Web根目录中的位置运行R脚本。

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