系統: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
|