
Я пытаюсь заставить 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
Сначала проверьте, 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
инструмент). В качестве альтернативы вы можете попробовать использовать виртуальный фреймбуфер.
Подробности смотрите в этом вопросе на Stack Overflow:Как запустить R на сервере без X11 и избежать сломанных зависимостей.