2016-10-17 2 views
3

私は、HTMLウィジェット(主にプロットとネットワークD3)の豊富さを、Rのグリッドにプロットとして配置し、それらを出版物のpdfグラフィックとしてエクスポートする可能性を望みます。私は、「検索htmlウィジェットプロットをPDF形式でエクスポートするためのグリッドに配置するにはどうすればよいですか?

Error in gList(list(x = list(links = list(source = c(0, 0), target = c(1, : 
only 'grobs' allowed in "gList" 

:私は:: grid.arrangeをRで一部のHTMLウィジェットオブジェクトを作成し、gridExtraでそれらを手配しようとした場合ただし、()私は次のエラーを取得する(以下、最小限の例を参照してください) htmlウィジェットをグロブまたはプロットに変換する "ことで、それらをグリッドに並べ替えることができますが、関連する情報は見つかりませんでした。 htmlwidgets :: saveWidget()のウェブサイトとしてhtmlウィジェットを保存してから、webshot :: webshot()でpdfに変換して、グラフィックを手作業でベクトルグラフィックに並べることができますエディタ(Inkscapeなど)。しかし、手作業にもかかわらず、すべての変換ステップで品質が低下する可能性があります。

多分LaTeX R-Markdown文書のグラフィックを表や列で並べて、プロットに合わせて紙の寸法を指定することができます。しかし、何らかの理由で理想的な解決策にはならないと感じています。私はグラフを動的にいくつかの列や行に配置したり、タイトルなどを追加したりしてLaTeX/knitrでの配置が非常に複雑になります。

私は手作業ですべてを編む旅に着手する前に、いくつかのHTMLウィジェットプロットを手配し、R内のpdfにエクスポートするより良い方法を知っていますか?ここで


最小限の例では、私の問題を再現するために少し最小限の例です。さんがそうのように、グリッドで隣同士にそれらを配置することにより、(サンキーはnetworkD3で図)私の目的はお互いに2つの異なるプロセスのエネルギーの流れを比較したグラフであるとしましょう: 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、networkD3 0.2.13

+0

http://www.rmarkdown.rstudio.com/flexdashboard/ご参考までに –

+1

[http://rmarkdown.rstudio.com/flexdashboard/](http://rmarkdown.rstudio.com/flexdashboard/)完璧な、しかしwwwなし。前に( "ページが見つかりません") – Nino

+0

そして、PDFにエクスポートするには* webshot :: webshot()*を使用する必要がありますか? – Nino

答えて

1

アミットコーリIのインスピレーションをした後、フレックスダッシュボード、あらゆる種類のRmarkdownフォーマット(html、pdf、isolides、...)、Rプレゼンテーションを試し始めましたが、それらのすべてに私のターゲットと比べていくつかの欠点がありました。

私の意見では、最良の視覚的結果は光沢アプリで実現できます。その後、得られたウェブサイトをクロムでpdfとして保存し、最後にbrissでpdfをクロップします。

library(networkD3) 

## 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)) 

# Define UI for application that draws two Sankeys in columns 
ui <- shinyUI(fluidPage(column(6, 
           h2("Process 1", align = "center"), 
           uiOutput("plot1.ui") 
           ), 
         column(6, 
           h2("Process 2", align = "center"), 
           uiOutput("plot2.ui") 
           ) 
)) 

# Define server logic required to draw the sankeys 
server <- shinyServer(function(input, output) { 

    #Render plot area relative to flow height 
    output$plot1.ui <- renderUI({ 
     sankeyNetworkOutput("Plot1", height = "400px") 
    }) 
    output$plot2.ui <- renderUI({ 
     sankeyNetworkOutput("Plot2", height=paste0(400*(70/100),"px")) 
    }) 

    #Render Sankeys 
    output$Plot1 <- renderSankeyNetwork({ 
    sankeyNetwork(Links = dfSankey$links1, Nodes = dfSankey$nodes, Source = 'Source', 
        Target = 'Target', Value = 'Value', NodeID = 'Name', fontSize = 15, nodeWidth = 10) 
    }) 

    output$Plot2 <- renderSankeyNetwork({ 
    sankeyNetwork(Links = dfSankey$links2, Nodes = dfSankey$nodes, Source = 'Source', 
        Target = 'Target', Value = 'Value', NodeID = 'Name', fontSize = 15, nodeWidth = 10) 
    }) 
}) 

# Run the application 
shinyApp(ui = ui, server = server) 

はまだ光沢のあるアプリを書くために少しやり過ぎのように感じているとちょうどPDFで2つのHTMLウィジェットの数字を配置するための変換すべて、このマニュアルをやってますが、少なくとも結果のPDF画像が非常に喜ば見えます。

これが他の人にも役立つことを願っています。

関連する問題