2013-06-21 3 views
5

Я запускаю R-shiny (версия R.0.0.1 (2013-05-16)) на виртуальной машине (выпуск Red Hat Enterprise Linux Server 6.4). Все работает, то есть, сервер запускается, и приложение запускается и т.д ... до тех пор, пока я не пытаюсь построить графикНе удается отобразить png

renderPlot 

Затем я вижу на главной панели сообщения [Ошибка: не удалось запустить устройство png]. Я бы опубликовал весь свой код, но эта проблема, как мне кажется, связана с графическими выводами, когда я использую renderText и выплюнул некоторые данные, которые он отлично работает.

На самом деле, когда я просто наберите в PNG() в РИ получаю эту ошибку [ Ошибка в .External2 (C_X11, паста ("PNG ::", имя файла, Сентябре = ""), г $ ширина, : не удалось запустить устройство 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, что я должен установить его (локальный: 0,0 не работал)

Очевидно, что если есть что-то я пропускаю эти вопросы могут быть неуместны.

Спасибо заранее и извините за бессвязные, хотел быть тщательным.

PJ

+0

Параметр 'переменная display' должна указывать на рабочем сервере X, в противном случае очень мало смысла в создании его. –

+1

Позвольте указать в правильном направлении: http://trestletechnology.net/2013/02/graphical-tools-rgl-on-a-headless-shiny-server/ –

ответ

7

Поможет ли это, если вы установите 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.

+0

Привет, Yihui. Вы предлагаете установить 'option (bitmapType = 'cairo')' в файле 'server.R'? –

+0

@ StéphaneLaurent да, это также один из способов пойти; Я упомянул выше '~/.Rprofile', что означает установить этот параметр глобально для всех ваших сеансов R. –

+0

Я попробовал' options (bitmapType = 'cairo') 'в файле' server.R', но это ничего не меняет , –

1

Я смог решить эту проблему, установив несколько дополнительных пакетов разработки, а затем удалив/переустановив 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 

 Смежные вопросы

  • Нет связанных вопросов^_^