之前为了解决PNG图片绘制以及--enable-R-shlib带来的性能折扣(其实我并不是很在意这个)问题,我决定再次重新装R。然后并没有解决我的问题,感觉好像掉进更深的坑里。
(图源 :pixabay)
然后有些家伙竟然要往坑里填土,着实太坏了。你以为填上土,落井下石就可以打倒O哥?太幼稚!再坑里填上土,浇点水,到了秋天,会长出好多好好O哥的。
哦,其实没用到秋天,用了几近一天的时间,O哥从坑里爬出来啦。
问题
之前说到第二次从源码重新装R并没有解决类似如下语句出错的问题:
png(file = "barchart.png")
看了一下,PNG、X11、cairo状态都是FALSE
我的要求并不高,png()
能正常绘图就行。
思路
那么如何解决这个问题呢,我又开始疯狂搜索模式,大致有以下几个思路:
- Linux下装X11 Server
sudo apt-get install xorg openbox
- 不装X,安装 virtual framebuffer X11 server
apt-get install xvfb xauth xfonts-base
xvfb-run
- 配置X11转发(Xming等)
#vi /etc/ssh/sshd_config
X11 Forwarding yes
- 使用cairo
前三种方式我没有去核实,仅供参考,接下来我们来看看第四种方式,使用cairo
cairo
对于我们遇到的问题,很多回答都建议png()
前加上如下语句:
options(bitmapType='cairo')
原因是,R中png()
使用默认的基于X11的设备,而我们的X11状态为FALSE,当然就用不起来了,上述语句的意思是让png()
换用cairo。
Cairo是一个2D图形库,支持多种输出设备。可是在回头看我们的输出
cairo状态也是FALSE,这就尴尬了啊。
于是使用如下命令安装Cairo
sudo apt-get install libcairo2-dev libxt-dev
然后重做R的编译配置
注意红框部分,对比一下我上个帖子中的截图:
哈哈,Cairo冒出来啦。
解决
然后就简单了,重新编译&安装,再来看一下
来试试上述方案工作不?
options(bitmapType='cairo')
png(file = "barchart.png")
耶,一切正常。但是每次都多敲一行是不是很别扭。这个文章下边的回答中给出了一个方案
vi .Rprofile
options(bitmapType='cairo')
关于.Rprofile,可以参考Customizing Startup。
总结
好在解决了,不然在坑里的感觉真不好受。让我重新折腾一遍,我不确定我能否正确无误的装R(还好不是X语言),这玩意太折磨人了。
我觉得以后再也不装R了😭
相关链接
- 学R:准备工作
- 继续学R:安装软件包
- 继续学R:另一款在线R环境
- 继续学R:R的6大基本数据类型(原子向量)
- 继续学R:Vector(向量) Part 1, 多元素向量创建&类型
- 继续学R:Vector(向量) Part 2, 多元素向量访问 & 计算长度
- 继续学R:Vector(向量) Part 3, 多元素向量的操作(算术操作&排序)
- 继续学R:List(列表) Part 1, 创建列表&命名&访问
- 继续学R:List(列表) Part 2, 列表的操作
- 继续学R:Matrices(矩阵) Part 1,创建矩阵&命名&访问
- 继续学R:Matrices(矩阵) Part 2,矩阵访问方式&矩阵操作&进阶操作
- 继续学R:在Linux下源码方式装R / Installing R from source
- 继续学R:重新装R / Installing R from source (2) 又掉坑里了😭
- R Installation and Administration
- Customizing Startup