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 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM