系统: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-Cloud                       2: Argentina (La Plata)      
 3: Argentina (Mendoza)           4: Australia (Canberra)      
 5: Australia (Melbourne)         6: Austria                   
 7: Belgium                       8: Brazil (BA)               
 9: Brazil (PR)                  10: Brazil (RJ)               
11: Brazil (SP 1)                12: Brazil (SP 2)             
13: Canada (BC)                  14: Canada (NS)               
15: Canada (ON)                  16: Canada (QC 1)             
17: Canada (QC 2)                18: Chile                     
19: China (Beijing 1)            20: China (Beijing 2
选一个北京的好了: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
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package 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 version 3.1.0 (2014-04-10) -- "Spring Dance"
Copyright (C) 2014 The R Foundation for 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 root  6832 5月  13 10:33 out.png
-rw-r--r--. 1 root root    71 5月  13 10:32 test.r

linux命令行下使用R语言绘图的更多相关文章

  1. 详解Linux命令行下常用svn命令

    1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...

  2. 在linux命令行下执行php 程序

    如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...

  3. Linux命令行下cp,rm,mv命令的使用

    以下的内容来源于<鸟哥的私房菜> Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件 ...

  4. linux命令行下svn常用命令

    linux命令行下svn常用命令 1. 将文件checkout到本地目录 1 #path是服务器上的目录 2 svn checkout path 3 4 #示例 5 svn checkout svn: ...

  5. Linux命令行下的vim文本编辑器

    Linux命令行下的vim文本编辑器 下面这个网站的地址讲解的非成分清楚!!!! http://blog.csdn.net/niushuai666/article/details/7275406 学习 ...

  6. Linux命令行下常用svn命令

    1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...

  7. Linux命令行下如何终止当前程序

    Linux命令行下如何终止当前程序 快捷键: Ctrl+c 在命令行下起着终止当前执行程序的作用, Ctrl+d 相当于exit命令,退出当前shell Ctrl+s 挂起当前shell(保护作用很明 ...

  8. Linux 命令行下搜索工具大盘点,效率提高不止一倍!

    在 Linux 命令行下进行文本关键字的搜索,大家肯定第一时间会想到 grep 命令.grep 命令确实十分强大,但如果需要用到它更加灵活的功能时,可能命令就会显得十分复杂. 于是,为了简化 grep ...

  9. 在Linux命令行下令人惊叹的惊叹号(!)

    '!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能 ...

随机推荐

  1. ios开发之OC基础-类和对象

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  2. SQL笔记 [长期更新] (-2013.7)

    --IF EXISTS(SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[TABLEA]') ) DROP TABLE tableA--CREA ...

  3. SQL表自连接用法

      一个表与自身进行连接,称为自连接 问题的提出:一个网友提出这样一个SQL题目,说自己想了很久没解决,我一看,这不是很简单吗 可是自己在查询分析器调试了半天原来问题并不是那不简单 有一个学生表,里面 ...

  4. 对js闭包的粗浅理解

    只能是粗浅的,毕竟js用法太灵活. 首先抛概念:闭包(closure)是函数对象与变量作用域链在某种形式上的关联,是一种对变量的获取机制.这样写鬼能看懂. 所以要大致搞清三个东西:函数对象(funct ...

  5. 登陆peoplesoft的时候显示信息

    Signon Event Message Select selectPeopleTools, then selectUtilities, then selectAdministration, then ...

  6. [leetcode]_Palindrome Number

    判断integer是否为回文串(负数全部不为回文串) 思路很直接,提取出integer中的每一位,一头一尾进行比较是否相同. 一次AC , 直接上代码: public boolean isPalind ...

  7. VS2008无法切换到视图设计器

    编写人:CC阿爸 2014-2-17 近来用于干活的笔记本电脑实在太慢了,在领导的安排下,有幸更换了一台配置好的电脑.经过一天的努力,所有之前的开发软件都安装完成了.并且OS从xp升级到win7.SQ ...

  8. IIS 7.5 配置Asp+Access的几点注意的地方

    环境:window2008 R2 + iis 7.51 把网站程序放在一个www文件夹里面,给这个文件夹添加everyone的用户,赋予全部读写权限,这样安全些.2 选中要配置的网站,点击页面中间“A ...

  9. 阿里云利用web直传文件到oss服务器

    http://files.cnblogs.com/files/adtuu/oss-h5-upload-js-direct.tar.gz

  10. PHP常用函数和常见疑难问题解答

    PHP常用库函数介绍 一.PHP字符串操作常用函数 1.确定字符串长度  int strlen(string str) 2.比较两个字符串 a. strcmp函数对两个字符串进行二进制安全的比较,并区 ...