linux命令行下使用R语言绘图
系统: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 ComputingPlatform: 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语言绘图的更多相关文章
- 详解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中经过确切地检验.尽管我没有试过,但大多都不能 ...
随机推荐
- 学习总结 java线程
package com.hanqi.xc; public class Test1 { public static void main(String[] args) { // 线程测试 for (int ...
- php odbc连接 查询显示不完整问题
首先php.ini里里面mssql查询的默认配置是4096 1.找到[MSSQL] ; Valid range 0 - 2147483647. Default = 4096.mssql.textlim ...
- ASP.NET MVC4 学习系统五(Razor)
Razor ,你好! Razor 是一种把代码和内容进行平滑集成的语法.尽管它引入了一些新的符号和关键字,但是Razor并不是一种新的语法.相反,Razor允许用户使用已知的语言来编写代码 ...
- Windows10系统如何安装Microsoft Visual Studio 2015及最小子数组和求解
一.Windows10系统如何安装Microsoft Visual Studio 2015. 1.首先到Visual Studio官方网站(https://www.visualstudio.com/v ...
- zz
婚恋新现象 杭州男为何更愿意娶外地女孩?-浙江新闻-浙江在线 剩男三无
- Qt中QObject中的parent参数
今天写了一个小程序,验证了带参的构造函数中参数parent的作用. 在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化.我采用了两种初始化方式,一种是带参 ...
- 纯servlet返回xml数据
... void doget..... response.setContentType("application/xml");//设置格式 PrintWriter out = r ...
- JavaScript的检测属性、属性特性、枚举属性
/* 检测属性 检测属性可以通过三种方式 1.通过in运算符 2.通过hasOwnPerperty() 如果给定的属性是继承属性将返回false 3.通过propertyIsEnumerable(): ...
- undefined reference to `pthread_create'问题解决
在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需 ...
- xdotool-linux下的按键精灵
这是我在ST写的用来自动打开机顶盒的脚本 #!/bin/bash init_stb() { xdotool type "telnet 10.80.117.$1" xdotool k ...