Я хотел бы объединить богатство html-виджетов (в основном, plotly и networkD3), с возможностью размещения их в виде графиков в сетке в R, чтобы экспортировать их в формате pdf для публикации. Тем не менее, если я создаю некоторые объекты HTML виджета в R и попытаться организовать их gridExtra :: grid.arrange() (см минимальный пример ниже), я получаю следующее сообщение об ошибке:Как разместить графические элементы html в сетке для экспорта в формате pdf?
Error in gList(list(x = list(links = list(source = c(0, 0), target = c(1, :
only 'grobs' allowed in "gList"
я искал « преобразование html-виджетов в грызуны или сюжеты », чтобы иметь возможность размещать их в сетке, но не смог найти никакой соответствующей информации. Я мог бы пойти длинный ручной способ сначала сохранить html-виджет как сайт с htmlwidgets :: saveWidget(), а затем преобразовать его в pdf с webshot :: webshot() и организовать графику вручную с помощью векторной графики редактора (например, Inkscape). Но, несмотря на ручное усилие, все этапы преобразования могут привести к снижению качества.
Возможно, я мог бы как-то упорядочить графику в документе LaTeX R-Markdown с помощью таблиц или столбцов и указать размер бумаги в соответствии с моим графиком. Но почему-то это не похоже на идеальное решение, так как я могу динамически упорядочивать свои графики в нескольких столбцах и строках, добавлять заголовки и т. Д., Что сделало бы схему довольно сложной в LaTeX/knitr.
Итак, прежде чем я отправимся в путешествие по вязанию всего вручную, я хотел бы спросить, знаете ли вы, как лучше расположить графики html-виджетов и экспортировать их в pdf внутри R?
Пример минимального
Вот немного минимальный пример, чтобы воспроизвести мою проблему. Скажем, моя цель представляет собой график, который сравнивает поток энергии двух различных процессов друг с другом (Санки диаграммы с networkD3), располагая их рядом друг с другом в сетке, например, так: Exemplary arranged Sankey plots
Это будет мой код:
library(networkD3)
library(grid)
library(gridExtra)
## Create simplified Data
dfSankey <- list()
dfSankey$nodes <- data.frame(Name = c("Final Energy","Conversion Losses","Useful Energy"))
#1st process
dfSankey$links1 <- data.frame(Source = c(0,0),Target=c(1,2),Value=c(30,70))
#2nd process
dfSankey$links2 <- data.frame(Source = c(0,0),Target=c(1,2),Value=c(10,60))
## Draw Sankeys
plSankey1 <- sankeyNetwork(Links = dfSankey$links1, Nodes = dfSankey$nodes, Source = 'Source',
Target = 'Target', Value = 'Value', NodeID = 'Name')
plSankey2 <- sankeyNetwork(Links = dfSankey$links2, Nodes = dfSankey$nodes, Source = 'Source',
Target = 'Target', Value = 'Value', NodeID = 'Name')
#Arrange them next to each other
grid.arrange(plSankey1,plSankey2)
В результате появляется сообщение об ошибке, упомянутое в начале.
Windows 7, R-Studio 0.99.903, R версия 3.2.3, сетка 3.2.3, gridExtra 2.2.1, 0.2.13 networkD3
http://www.rmarkdown.rstudio.com/flexdashboard/ Добро пожаловать –
[http://rmarkdown.rstudio.com/flexdashboard/](http://rmarkdown.rstudio.com/flexdashboard/) Отлично, но без www. before («Страница не найдена») – Nino
И затем для экспорта в PDF Мне нужно использовать * webshot :: webshot() * Я предполагаю? – Nino