现在 Rstudio Server 上面能正常地用 echarts4r 包画图,也能正常 Knit。但是如果换别的画图包会报错,点击 Knit 倒是也不报错。举个栗子,在 Rstudio Server 上面新建一个 R Markdown 文档。
设定好如下参数。
```{r setup, include=TRUE,dev="CairoPNG"}
knitr::opts_chunk$set(echo = TRUE,dev="CairoPNG")
```
随便找个 ggplot2 画图的例子,比如。
library(ggplot2)
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()
最后点击 Knit 就会生成一个正常的有图的 html 文件。
但是如果直接在 R Markdown 里面运行上面画图的代码,就会报下面这个错误。
Error in .External2(C_X11, paste0("png::", filename), g$width, g$height, : unable to start device PNG
换到 Console 里面运行画图的代码,也会报出如下类似的错误。
Error in RStudioGD() :
Shadow graphics device error: r error 4 (R code execution error)
In addition: Warning message:
In grDevices:::png("/tmp/Rtmpz51ybW/c087935e645c447e881c4a3250b2fe36.png", :
no png support in this version of R
上网搜了搜,得到几种解决办法,一是往 Linux 上面装 libpng 以及各种依赖,二是重装R,三是library(Cairo)
。
前两个解题思路倒是不算难,但是对我这种对 Linux 不熟的人来说费时。我想既然 Knit 就能正常出图,而 echarts4r 包 也能正常用,那其他画图包应该至少能画出图来才对,于是照着方法三试了试。如下代码执行后,图片不会直接显示在R Markdown 文档里,也不会显示在 Viewer 窗格里,而是在默认路径下生成一张图片,也算是画出来图了。
library(Cairo)
library(ggplot2)
Cairo(
file = "Cairo_PNG_dpi.png",
type = "png",
width = 1200,
height = 800,
dpi = 96
)
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point()
dev.off()