Не могу отобразить png
Я использую R-Shiny (версия 3.0.1 (2013-05-16)) на виртуальной машине (Red Hat Enterprise Linux Server выпуск 6.4). Все работает, то есть сервер запускается, приложение запускается и т. Д., Пока я не пытаюсь построить график
renderPlot
Затем я вижу на главной панели сообщение [ошибка: невозможно запустить устройство png]. Я бы опубликовал весь свой код, но я думаю, что эта проблема связана с рендерингом графиков, так как когда я использую renderText и выкладываю некоторые данные, все работает отлично.
На самом деле, когда я просто набираю png() в R I, получаю эту ошибку [Ошибка в.External2(C_X11, вставка ("png::", filename, sep = ""), g$width,: невозможно запустить устройство PNG. Дополнительно: Предупреждающее сообщение: В png(): не удается открыть соединение с дисплеем X11 '' ]. Конечно, если я переадресую через ssh -X на мой Mac, я могу напечатать png() без проблем, вывести данные и т. Д....
Еще несколько вещей, на которые стоит обратить внимание, когда я набираю capabilties(), я нахожу единственные ложные значения: jpeg, tiff, X11, aqua и profmem (поэтому png и cairo - True)
-Я установил libpng, cairo и libX11, libX11-devel, libXt, libXt-devel перед сборкой R из исходного кода
Я предполагаю, что моя проблема в том, что мне нужно запустить X-сервер. Кроме того, переменная DISPLAY имеет значение null.
Итак, я полагаю, что когда все сводится к этому, мой вопрос... предполагая, что моя логика верна.
1) Нужно ли запускать / запускать X-сервер [в настоящее время он останавливается после запуска по какой-то причине] или я могу просто установить переменную DISPLAY?
2) Если я могу просто установить свою переменную DISPLAY, что мне следует установить (localhost:0.0 не работает)
Очевидно, что если я что-то упускаю, эти вопросы могут быть неуместны.
Заранее спасибо и извините за бессвязные, хотел быть тщательным.
PJ
2 ответа
Поможет ли это, если вы установите option(bitmapType = 'cairo')
? Я скептически относился к тому, как R выбирает тип растрового устройства, используя .Call(C_cairoProps, 2L)
в grDevices:::.onLoad()
(это может быть ошибка, но я не могу сказать это точно).
Опция bitmapType
возвращается к Xlib
если тест cairo
терпит неудачу, таким образом, давая вам загадочное сообщение об ошибке X11
, Обратите внимание type
аргумент в png()
:
> args(png)
function (filename = "Rplot%03d.png", width = 480, height = 480,
units = "px", pointsize = 12, bg = "white", res = NA, ...,
type = c("cairo", "cairo-png", "Xlib", "quartz"), antialias)
Значением по умолчанию этого аргумента является getOption('bitmapType')
и в вашем случае это Xlib
из-за теста в grDevices:::.onLoad()
, Если вы на 100% уверены, что cairo
работает, вы можете изменить эту опцию, скажем, в вашем ~/.Rprofile
,
Я смог решить эту проблему, установив несколько дополнительных пакетов разработки, а затем удалив / переустановив R из исходного кода. Все остальные рекомендуемые варианты не работали для меня до этого.
sudo yum install pango-devel pango libpng-devel
Перейдите в каталог, где был установлен исходный R-файл:
make uninstall
./configure --with-readline=no (or ./configure might work for you)
make
make install