이 경우, 다음과 같이 Rstudio에 DISPLAY 환경 변수를 설정하면 문제를 해결할 수 있습니다.
R_HOME (여기서는 /usr/local/lib/R) 밑의 etc/Renviron 이라는 파일 속에 환경 변수를 설정할 수 있습니다. 여기서는 일단 DISPLAY를 null 값으로 설정하겠습니다.
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo vi Renviron
...
DISPLAY=""
그리고 나서 Rstudio server를 stop/start 시킵니다.
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo systemctl stop rstudio-server
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo systemctl start rstudio-server
이제 다음과 같이 Rstudio에 http://ip_address:8787로 접속하여 Sys.getenv("DISPLAY) 명령으로 확인한 뒤, capabilities() 명령을 내려보면 jpeg 및 png가 모두 FALSE로 설정되어 있는 것을 보실 수 있습니다. 이 상황에서는 plot 명령으로 그래프를 그려봐도 다음과 같은 error만 나옵니다.
> Sys.getenv("DISPLAY") [1] "" > capabilities() jpeg png tiff tcltk X11 aqua FALSE FALSE FALSE FALSE FALSE FALSE http/ftp sockets libxml fifo cledit iconv TRUE TRUE TRUE TRUE TRUE TRUE NLS profmem cairo ICU long.double libcurl TRUE FALSE FALSE TRUE TRUE TRUE > plot(mtcars) Error in RStudioGD() : Shadow graphics device error: r error 4 (R code execution error) In addition: Warning message: In grDevices:::png("/tmp/RtmpYfCiVe/3183debe21b14a24a820a8ee6162a221.png", : unable to open connection to X11 display ''
이제 etc/Renviron을 편집해서 다음과 같이 DISPLAY를 ":0"으로 바꾸겠습니다.
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo vi Renviron
...
DISPLAY=":0"
그리고 나서 Rstudio server를 stop/start 시킵니다.
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo systemctl stop rstudio-server
u0017496@sys-85972:/usr/local/lib/R/etc$ sudo systemctl start rstudio-server
이번에 접속해서 동일한 명령들을 내려보면, capabilities()에서 jpeg 및 png가 모두 TRUE로 설정되어 있는 것을 보실 수 있습니다. 이제 plot 명령으로 그래프를 그려보면 잘 나옵니다.
> Sys.getenv("DISPLAY") [1] ":0" > capabilities() jpeg png tiff tcltk X11 aqua TRUE TRUE FALSE FALSE TRUE FALSE http/ftp sockets libxml fifo cledit iconv TRUE TRUE TRUE TRUE TRUE TRUE NLS profmem cairo ICU long.double libcurl TRUE FALSE FALSE TRUE TRUE TRUE > plot(mtcars) | |
더 간단하게는, Sys.setenv 명령으로 DISPLAY 변수를 설정해도 됩니다.
> Sys.setenv(DISPLAY="unix") > x <- (1:10) > y <- (11:20) > plot(x,y,type='l') Error in RStudioGD() : Shadow graphics device error: r error 4 (R code execution error) In addition: Warning message: In grDevices:::png("/tmp/RtmpsGv8Ft/10d5f91915bc4744aa48a7fbd4806103.png", : unable to open connection to X11 display '' > Sys.setenv(DISPLAY=":0") > plot(x,y,type='l') | |
|
Shadow graphics device error 4 메시지가 어떤 경우에
답글삭제뜨는건지요?
그 밑의 메시지처럼, 그래프를 그려야 하는데 그릴 곳(display)이 없는 경우입니다.
삭제