2016-01-03 9 views
11

Desidero creare grafici interattivi usando R e plot.ly. Quando eseguo il codice seguente in R-Studio, produce un grafico interattivo.Utilizzo di R e plot.ly - come faccio a salvare il mio output come pagina web nello script

library(plotly) 
set.seed(100) 
d <- diamonds[sample(nrow(diamonds), 1000), ] 
plot_ly(d, x = carat, y = price, text = paste("Clarity: ", clarity), 
    mode = "markers", color = carat, size = carat) 

Dopo aver prodotto questo grafico, quando si fa clic sul pulsante "Esporta" nella finestra Plot di R-Studio, mi dà la possibilità di salvare la trama come una pagina web. Come posso programmare il processo di salvataggio dei grafici prodotti come pagine web? Il mio obiettivo finale è di eseguire Rscripts iterativamente da uno script bash per produrre più pagine web.

risposta

22

assegnare l'oggetto plot_ly a una variabile e quindi utilizzare htmlwidgets::saveWidget() per salvare il file vero e proprio, in questo modo:

library(plotly) 
set.seed(100) 
d <- diamonds[sample(nrow(diamonds), 1000), ] 
p <- plot_ly(d, x = carat, y = price, text = paste("Clarity: ", clarity), 
      mode = "markers", color = carat, size = carat) 
htmlwidgets::saveWidget(as.widget(p), "index.html") 
+0

questo sembra molto incoraggiante. Quali pacchetti stai usando, oltre a plotly e htmlwidgets? Ricevo un messaggio di errore che dice che R non può trovare la funzione "as.widget". Sto eseguendo R con i seguenti pacchetti caricati: plotly, htmlwidgets, htmltools, knitr. Dovrei avere un altro pacchetto caricato? Ecco il messaggio di errore completo: Errore in resolveSizing (x, x $ sizingPolicy, standalone = standalone, knitrOptions = knitrOptions): impossibile trovare la funzione "as.widget" – Slavatron

+1

'as.widget' è [parte di plotly] (https: //github.com/ropensci/plotly/blob/d16be22f284ad36fba3c14f2b3cc015064e74cf3/man/as.widget.Rd), ma è stato aggiunto solo alla fine di dicembre, quindi potresti eseguire una versione precedente della libreria. – Andrew

+0

Hmmm, appena aggiornato (ora versione 2.0.16) e sto ancora ricevendo lo stesso errore ... – Slavatron