5

Я пытаюсь заставить R сделать какие-то очень простые прорисовки и тому подобное в UNIX, но получаю странную ошибку, связанную с X11, когда, насколько я могу судить, мне даже не нужен X11.

У меня есть имя матрицы d и я хочу сохранить изображение тепловой карты этой матрицы, даже не отображая ее (поскольку я не хочу использовать X11). Вот мой код:

png(file="my_image.png")
heatmap(d)
dev.off()

Проблема в том, что я получаю следующую ошибку:

Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize,  :
  unable to start device PNG

Дополнительно: предупреждающее сообщение:

In png(file = "interative_hen.png") :
  unable to open connection to X11 display ''

Я не знаю, что это происходит, так как я не понимаю, как R нуждается в X11, и даже если это так, X11 установлен и работает должным образом для каждого приложения, с которым я его тестировал.

1 ответ1

4

Сначала проверьте, имеет ли используемая вами версия R возможности PNG. Вы можете сделать это, вызвав capabilities() из приглашения R Следует распечатать список, похожий на:

> capabilities()

jpeg    png    tiff    tcltk  X11    aqua     http/ftp  sockets
FALSE   FALSE  FALSE   TRUE   FALSE  FALSE    TRUE      TRUE

libxml  fifo   cledit  iconv  NLS    profmem  cairo
TRUE    TRUE   TRUE    TRUE   TRUE   FALSE    FALSE 

Если вы видите FALSE под png , вам нужно вручную перекомпилировать R с явной поддержкой PNG. Пока вы установили необходимые зависимости сборки, процесс сборки должен автоматически включать возможности PNG.


Наконец, при условии, что в кластере не запущен локальный X-сервер, ваш SSH-клиент может быть неправильно настроен - в частности, убедитесь, что вы включили пересылку X11 (используя флаги -X или -Y если вы используете UNIX-подобный инструмент ssh ). Кроме того, вы можете попробовать использовать виртуальный кадровый буфер.

Посмотрите этот вопрос переполнения стека для деталей: Как запустить R на сервере без X11, и избежать нарушения зависимостей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .