系统:centos 6.4 64bit
环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c
在R语言中可以使用png()等函数生成图片,例如: png("aa.png")可以生成图片。
但是如果你是通过shell远程连接到系统上,可能会碰到如下错误:
1
2
3
4
5
> png("aa.png")
错误于.External2(C_X11, paste("png::", filename, sep =""), g$width, :
无法打开PNG设备
此外: 警告信息:
In png("aa.png") : 无法打开链结到X11显示''
分析:
打开R控制台,输入capabilities(),可以看到:
1
2
3
4
5
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp sockets
FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo
TRUE TRUE TRUE TRUE TRUE FALSE FALSE
可以看到png为false,因为生成图片需要X11,但是shell是没有X11的。
怎么解决:
1.在X11模式下执行R语言命令,也就是在linux的桌面。如果你只是在桌面上画画图,那选择这个方式就可以了。
2.不使用X11生成,使用 图形渲染库Cairo。比如我,需要用脚本,根据实时数据生成统计图,那么用这个方式就很方便。
安装:
启动R控制台
R
安装
1
install.packages("Cairo")
会让你选择安装镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--- 在此連線階段时请选用CRAN的鏡子 ---
CRAN mirror
1:0-Cloud2: Argentina (La Plata)
3: Argentina (Mendoza)4: Australia (Canberra)
5: Australia (Melbourne)6: Austria
7: Belgium8: Brazil (BA)
9: Brazil (PR)10: Brazil (RJ)
11: Brazil (SP1)12: Brazil (SP2)
13: Canada (BC)14: Canada (NS)
15: Canada (ON)16: Canada (QC1)
17: Canada (QC2)18: Chile
19: China (Beijing1)20: China (Beijing2)
选一个北京的好了:20
安装出错
configure: error: Cannot find cairo.h! Please install cairo (http://www.cairographics.org/) and/or set CAIRO_CFLAGS/LIBS correspondingly.
所以我们需要先在系统中安装cairo库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
yum -y install cairo* libxt*
安装完成之后,重新执行:install.packages("Cairo")
installing to /usr/local/lib64/R/library/Cairo/libs
** R
** preparingpackage for lazy loading
** help
*** installing help indices
** buildingpackage indices
** testingif installedpackage can be loaded
* DONE (Cairo)
下载的程序包在
‘/tmp/RtmpNlGyf3/downloaded_packages’里
更新'.Library'里的HTML程序包列表
Making'packages.html' ... 做完了。
安装成功。
加载Cairo后,查看支持:
1
2
3
4
5
6
7
> library(Cairo)
> Cairo.capabilities()
png jpeg tiff pdf svg ps x11 win raster
TRUE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
说明已经支持用cairo生成图片了。
例如可以使用如下命令生成PNG:
CairoPNG(file="out.png",width=800,height=480)
附上一个测试小程序,主要为了说明用法:
#vim test.r
library(Cairo)
CairoPNG(file="out.png",width=800,height=480)
plot(5,4)
保存后执行:
1
2
3
4
5
6
7
8
9
[root@localhost ~]# Rscript test.r
R version3.1.0 (2014-04-10) --"Spring Dance"
Copyright (C)2014 The R Foundationfor Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
> library(Cairo)
> CairoPNG(file="out.png",width=800,height=480)
> plot(5,4)
>
在当前目录下可以看到生成了图片
1
2
3
4
[root@localhost ~]# ll
总用量84
-rw-r--r--.1 root root6832 5月13 10:33 out.png
-rw-r--r--.1 root root71 5月13 10:32 test.r
详解Linux命令行下常用svn命令
1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...
在linux命令行下执行php 程序
如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...
Linux命令行下cp,rm,mv命令的使用
以下的内容来源于 Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制 cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件 ...
linux命令行下svn常用命令
linux命令行下svn常用命令 1. 将文件checkout到本地目录 1 #path是服务器上的目录 2 svn checkout path 3 4 #示例 5 svn checkout svn: ...
Linux命令行下的vim文本编辑器
Linux命令行下的vim文本编辑器 下面这个网站的地址讲解的非成分清楚!!!! http://blog.csdn.net/niushuai666/article/details/7275406 学习 ...
Linux命令行下常用svn命令
1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...
Linux命令行下如何终止当前程序
Linux命令行下如何终止当前程序 快捷键: Ctrl+c 在命令行下起着终止当前执行程序的作用, Ctrl+d 相当于exit命令,退出当前shell Ctrl+s 挂起当前shell(保护作用很明 ...
Linux 命令行下搜索工具大盘点,效率提高不止一倍!
在 Linux 命令行下进行文本关键字的搜索,大家肯定第一时间会想到 grep 命令.grep 命令确实十分强大,但如果需要用到它更加灵活的功能时,可能命令就会显得十分复杂. 于是,为了简化 grep ...
在Linux命令行下令人惊叹的惊叹号(!)
'!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能 ...
随机推荐
ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...
linux shell中的特殊符号
该内容,均来自此网址(http://www.92csz.com/study/linux/12.htm).在下只是把那些命令的截图给去了. 你在学习linux的过程中,也许你已经接触过某个特殊符号,例如 ...
Ubuntu_开启root 登陆
默认的安装完ubuntu ,root 用户没有开启 1.使用安装时的用户,先给root用户设置密码 设置root密码 sudo passwd root 之后会提示输入新的密码 切换到root用户 su ...
70. Climbing Stairs(easy, 号称 Dynamic Programming 天下第一题)
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
基于IIS的WCF
(1)创建WCF服务应用程序 (2)配置IIS 将WCF服务应用程序配置IIS网站,需要使用.net4.0集成版本的程序池 (3)使用SvcUtil.exe生成客户端代码和配置 SvcUtil.exe ...
js 连接mqtt
js连接mqtt 项目中要用到mqtt,前端调用,使用github开源的paho-mqtt.js,api还是挺全面的,网上各种教程很全面,但是感觉代码过于杂乱,故而封装的一下.仿jquery ajax ...
第77节:Java中的事务和数据库连接池和DBUtiles
第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...
T-SQL基础(四)之集合运算
三个运算符 T-SQL支持三个集合运算符:UNION.INTERSECT.EXCEPT. 集合运算符查询的一般形式如下: Query1 Query2 -- 这 ...
MEME(Motif-based sequence analysis tools)使用说明
MEME(Motif-based sequence analysis tools)使用说明 2011-05-27 ~ ADMIN MEME是用于从一堆序列中搜索功能结构域的工具.比如说当你拿到了许多C ...