2016-12-27 9 views
0

Я не могу преобразовать диаграммы, созданные plotly в R sweave, в Pdf. Но могут быть созданы другие диаграммы. Нужно ли добавлять дополнительный код для графиков?Невозможно скомпилировать графические диаграммы из R sweave в pdf

Ниже приведен пример

\documentclass{article} 
\begin{document} 
\SweaveOpts{concordance=TRUE} 



<<echo = FALSE>>= 
C1<-c("A","B","C") 
C2<-c(10,20,30) 
Df<-data.frame(C1,C2) 
@ 

\begin {figure} 

<<echo = FALSE, fig = TRUE>>= 
suppressWarnings (library (plotly)) 
plot_ly(Df, x = ~C1, y = ~C2, type = "bar")%>% layout(title = "ABC") 
@ 

\caption {PlotlyChart} 
\end {figure} 

Normal Chart 

\begin {figure} 

<<echo = FALSE, fig = TRUE>>= 
barplot(Df[ ,2], names.arg = Df[ ,1]) 
@ 

\caption {Normal_Chart} 
\end {figure} 

\end{document} 

Когда я пытаюсь нормальный ящик участок в R, это работает. Только тогда, когда я добавить Plotly диаграмму, я получаю сообщение об ошибке, как

Running pdflatex on ABC.tex...failed 

Error running /Library/TeX/texbin/pdflatex (exit code 1) 

Я новичок в R sweave и латекс, так что любая помощь приветствуется. Благодаря!

ответ

2

Plotly производит javascript-код, который рисует график. Этот код должен быть выполнен в веб-браузере. Plotly можно использовать при создании только HTML-документа. Нет PDF, без латекса.

НО НО вы можете использовать пакет webshot с phantomjs, чтобы сохранить сюжет как изображение, а затем включить изображение в виде рисунка.

Сначала установите WebShot:

install.packages("webshot") 
webshot::install_phantomjs() 

Затем измените вам Sweave файл, как это:

\documentclass{article} 
\begin{document} 
\SweaveOpts{concordance=TRUE} 

<<echo = FALSE>>= 
C1<-c("A","B","C") 
C2<-c(10,20,30) 
Df<-data.frame(C1,C2) 
@ 

<<echo = FALSE, fig = FALSE>>= 
suppressWarnings (library (webshot)) 
suppressWarnings (library (plotly)) 
py <- plot_ly(Df, x = ~C1, y = ~C2, type = "bar")%>% layout(title = "ABC") 
export(py, file = "myplot.png") 
@ 
\begin {figure} 
\includegraphics{myplot.png} 
\end {figure} 

\end{document} 
+1

очень интересное решение. Также следует отметить, что 'phantomjs' работает как автономный терминал, что может быть полезно, если вы хотите просто создать статическое изображение вывода Plotly HTML. http://phantomjs.org/screen-capture.html – user5359531

+0

@HubertL - работает как магия. Спасибо за решение. – Jessie