2017-02-22 44 views
0

Пытаясь сделать первый шаг с plotly в R.Сохраните объект ggplot2 как ggplotly и сохраните на диск в Linux

Я хочу, чтобы преобразовать мой ggplot2 объект в ggplotly объекта, а затем сохранить его как html на Linux платформе. Я хочу, чтобы иметь возможность вызывать этот код R из командной строки и выполнять его как скрипт, а не запускать его через RStudio.

Я думал, что это будет делать (from plotly's manual):

require(ggplot2) 
require(plotly) 

ggiris <- qplot(Petal.Width, Sepal.Length, data = iris, color = Species) 
ggiris.ly <- ggplotly(ggiris) 
htmlwidgets::saveWidget(ggiris.ly,"ggiris.html") 

Но ggplotly(ggiris) выдает эту ошибку:

Error in .External2(C_X11, paste("png::", filename, sep = ""), g$width, : 
    unable to start device PNG 
In addition: Warning message: 
In dev_fun(tmpPlotFile, width = deviceWidth, height = deviceHeight) : 
    unable to open connection to X11 display '' 

Затем я установил XQuartz, чтобы иметь возможность ssh -X -Y от моего Mac к моей системе linux.

ggiris.ly <- ggplotly(ggiris) 

открывает R Graphics устройство, но затем

htmlwidgets::saveWidget(ggiris.ly,"~/Downloads/ggiris.html") 

выдает эту ошибку:

Error in htmlwidgets::saveWidget(ggiris.ly, "~/Downloads/ggiris.html") : 
    Saving a widget with selfcontained = TRUE requires pandoc. For details see: 
https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md 

Любая идея?

КСТАТИ Я использую plotly_4.5.6 и ggplot2_2.2.1

+0

Спасибо. Я заметил и зафиксировал его, но ошибка не связана. – user1701545

+0

Исправлено. Еще раз спасибо. – user1701545

+0

отлично работает с теми же версиями на win7 – HubertL

ответ

0

Я убедиться, что я не firewall о том, когда ssh -X от моего Mac к моему удаленному серверу.

Затем приведенный выше код без предупреждения. (ожидание создания пустого файла Rplot.pdf от открытия пустого графического устройства).

0

Вам необходимо установить pandoc в свою систему. Либо запустите sudo apt-get install pandoc, либо попросите ваш sysadmin сделать это, если у вас нет доступа root.

В качестве альтернативы, вы можете сэкономить, используя htmlwidgets::saveWidget(h, "test.html", selfcontained=FALSE)