R - unable to open connection to X11 display.
R 프로그래밍에서 이미지 파일을 생성하는 함수는 png, jpeg, pdf.. 기타 등등이 있습니다.
> png("test.png")
Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, :
unable to start device PNG
In addition: Warning message:
In png("test.png") : unable to open connection to X11 display.
서버에서 Data visualizing를 할 때, 항상 겪는 에러인데,
매번 찾는것이 귀찮아서 이참에 정리해보려고 합니다.
capabilities
{base} R Documentation
Report Capabilities of this Build of R
Description
Report on the optional features which have been compiled into this build of R.
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp sockets libxml
TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE
fifo cledit iconv NLS profmem cairo ICU long.double libcurl
TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE
Capabilities 함수는 현재 R에서 사용 가능한 output device들의 상태를 보여주는 함수입니다.
현재 서버는 X windows (혹은 X11)이 설치되어있지 않기 때문에 에러가 나게 됩니다.
따라서 이미지 파일을 생성할 때 type을 변경해주거나 options에서 bitmapType을 사용가능한 output device로 선택해주면
문제없이 원하는 이미지를 출력하여 파일로 저장하게 됩니다.
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp sockets libxml
TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE
fifo cledit iconv NLS profmem cairo ICU long.double libcurl
TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE
1. 이미지 파일을 생성할 때 type을 변경해주기
> png("test.png")
Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, :
unable to start device PNG
In addition: Warning message:
In png("test.png") : unable to open connection to X11 display ''
> png("abc", type="cairo")
> dev.off()
null device
1
2. default bitmapType을 사용 가능한 output device로 선택하기
> png("test.png")
Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, :
unable to start device PNG
In addition: Warning message:
In png("test.png") : unable to open connection to X11 display ''
> options(bitmapType="cairo")
> png("test.png")
> dev.off()
null device
1
>
- example
# HistTest.r
# Rscript ./HistTest.r
options(bitmapType="cairo")
for(i in 1:5){
png( paste0("Hist_",i,".png") )
x = rnorm(1000,0,1)
hist(x,prob=TRUE, breaks=25, col=5)
lines(density(x), col=4, lwd=2)
dev.off()
}
# result
[sosal@sosal HistTest]$ ll
total 84
-rw-rw-rw- 1 sosal sosal 15535 Dec 22 2015 Hist_1.png
-rw-rw-rw- 1 sosal sosal 16052 Dec 22 2015 Hist_2.png
-rw-rw-rw- 1 sosal sosal 14484 Dec 22 2015 Hist_3.png
-rw-rw-rw- 1 sosal sosal 15858 Dec 22 2015 Hist_4.png
-rw-rw-rw- 1 sosal sosal 15930 Dec 22 2015 Hist_5.png
-rw-rw-rw- 1 sosal sosal 197 Dec 22 2015 HistTest.r