Ошибка в R: невозможно открыть соединение с X11

9

Я просто настроил дистрибутив fedora на своем компьютере и медленно пытаюсь научиться работать из командной строки. Я проводил тестирование, Rкоторое прошло хорошо, за исключением некоторой причины, когда я попытался снова, я внезапно оказался не в состоянии рисовать графики. Я получаю ошибку:

> x = 1:5
> y = x^2
> plot(x,y)
No protocol specified
Error in X11(d$display, d$width, d$height, d$pointsize, d$gamma, d$colortype,  : 
  unable to start device X11cairo
In addition: Warning message:
In function (display = "", width, height, pointsize, gamma, bg,  :
  unable to open connection to X11 display ''

и когда я проверяю возможности, я вижу, что X11это FALSE:

> capabilities()
No protocol specified
    jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets 
    TRUE     TRUE     TRUE     TRUE    FALSE    FALSE     TRUE     TRUE 
  libxml     fifo   cledit    iconv      NLS  profmem    cairo 
    TRUE     TRUE     TRUE     TRUE     TRUE    FALSE     TRUE 

Хотя я ничего не знаю о том, связаны ли они или нет, кажется, X11 должен быть включен?

Повсюду, где я искал людей, эта проблема возникала при работе через ssh-соединение (я еще не видел, что именно: $).

Я надеюсь, что кто-то, кто знает, о чем эта проблема, может быть настолько хорошим, чтобы объяснить мне проблему и предложить решение.

Johann
источник
1
Перед запуском R вы можете опубликовать выводecho $DISPLAY
Карлсон
Эта команда дает ´: 0´
Jóhann
1
Как насчет R:Sys.getenv("DISPLAY")
Карлсон
хм, это только дает мне bash: syntax error near unexpected token "DISPLAY" '`
Йоханн
Сделайте это: Sys.getenv(DISPLAY)или это: Sys.getenv('DISPLAY')илиSys.getenv(c("DISPLAY"))
Карлсон

Ответы:

6

В другом месте есть много тем, связанных с пакетом Cairo.

Один из них упоминает об изменении типа X11, но большинство из них заявляет, что R не знает, что такое дисплей, и предлагает сделать:

Sys.setenv("DISPLAY"=":0.0")

или, на старых системах,

Sys.putenv("DISPLAY"=":0.0")
Карлсон
источник
5
К сожалению, ни это решение, ни упомянутое в другом потоке, кажется, не могут это исправить. : / Мой пакет также настаивает на том, чтобы я использовал Sys.setenv вместо putenv .. не знаете, отличается ли команда hte new?
Иоганн
3
Sys.putenvне рекомендуется в пользуSys.setenv
Карлсон
1
Это сработало в следующий раз, когда я попытался использовать это :). Должно быть, что-то странное с последней сессией
Иоганн
1

Если у вас нет локального X-сервера, вы можете установить виртуальный фрейм-буфер X11, как сказано здесь :

apt-get install xvfb xauth xfonts-base

Затем вы можете запустить новый экземпляр, как сказано здесь :

Xvfb :0 -ac -screen 0 1960x2000x24 &

Затем, если ваш R скомпилирован с with-xпараметром конфигурации (включен по умолчанию), у вас должна быть возможность X11, и вам просто нужно объявить это в R:

Sys.setenv("DISPLAY"=":0")
Энтони О.
источник