2016-05-15 23 views
9

Ho qualche problema nell'usare il pacchetto R di trama. Sono molto nuovo per la trama ma mi è piaciuto poter usare la sintassi ggplot-like, quindi sto cercando di farlo funzionare.Ridimensiona graficamente R ggplotly

Ho creato un grafico sfaccettato in cui è possibile passare con il mouse su un punto dati e visualizzare i dettagli su tale record. Sono molto contento della trama, ma mi piacerebbe ridimensionarla in modo che l'asse delle y di ogni trama non sia così breve, come in Mi piacerebbe regolare l'altezza e la larghezza della trama generale.

Come è, non riesco a capire come sovrascrivere il dimensionamento di default e sto tirando i miei capelli perché tutti gli esempi che posso trovare usano plot_ly() piuttosto che ggplotly(). Preferisco non ricostruire la trama solo per regolare le dimensioni, a meno che non sia necessario.

Il codice sto correndo attualmente è davvero semplice:

plot <- ggplot(data = counts_country, aes(x = Year, y = Count, color = Region, text = paste("country:", Country))) + 
    geom_point(size= 2, alpha = (1/2)) + 
    facet_wrap(~ Region, ncol = 1) 

(gg_plot <- ggplotly(plot)) 

È possibile vedere esattamente quello che sto lavorando con qui: http://rpubs.com/dbouquin/180894

ho provato la regolazione del complotto per mostrare due file di complotti, ma continuano ad avere problemi perché le etichette dell'anno si infrangono. Il ridimensionamento sembra tutto ciò di cui ho bisogno.

+0

io non sono sicuro se questo è quello che stai cercando, ma si potrebbe aggiungere al vostro diagramma plotly:%>% di layout (autosize = F, width = 1000, height = 600) e regola la larghezza e l'altezza della trama come desideri. – MLavoie

+0

Grazie per il suggerimento, ma non sta funzionando. La regolazione del layout in questo modo cambia semplicemente le dimensioni dello spazio di tracciamento, ma anche le intestazioni si allungano. I grafici stessi rimangono quasi gli stessi – Daina

+0

È scale = "free_y" cosa stai cercando? È argomento della funzione facet_wrap e ggplotly() si tradurrà. –

risposta

5

Ecco una soluzione. Sembra funzionare in documenti R-Markdown che sto indovinando è quello che ti serve? Conserva ancora la sintassi ggplot2 ma utilizza plotly_build() invece di ggplotly()

--- 
output: html_document 
--- 

### Using ggplotly() 
```{r, warning = F, message = F} 
library(plotly) 
library(dplyr) 

gg <- mtcars %>% 
    ggplot(aes(wt, mpg, color = gear)) + 
    geom_point() + 
    facet_wrap(~hp) 

ggplotly(gg) 
``` 

### Using plotly_build() 
```{r} 
ggp_build <- plotly_build(gg) 
ggp_build$layout$height = 800 
ggp_build$layout$width = 600 

ggp_build 
``` 

Sembra così:

enter image description here

enter image description here

+0

Nella versione corrente di pltly per plotly_build l'oggetto risultante non ha $ layout $ width o $ layout $ height proprietà – par

3

Proprio come plot_ly(), ggplotly() ha un e un argomento heightwidth, vedi ?ggplotly.

In generale, è buona norma impostare sempre height/width. Se non lo fai, e condividi la trama con qualcun altro, il dimensionamento potrebbe essere diverso a seconda del contesto.

Questo è particolarmente importante per ggplotly(). Al momento della stampa, per convertire il dimensionamento delle cose, deve assumere un valore height/width. Se non li specifichi, utilizza la dimensione del tuo dispositivo grafico R e non possiamo sempre garantire che il comportamento di ridimensionamento sia del tutto coerente con ciò che otterresti dal tuo dispositivo grafico R.

1

Vi consiglio di aggiornare all'ultima versione di plotly.

per vedere quale versione sei in: packageVersion("plotly")

È quindi possibile aggiungere i parametri width e height ai tuoi ggplotly() chiamate di funzione.

el <- as.data.frame(economics_long[,1:3]) 
econp <- ggplot(el, aes(date, value, group=variable)) + 
    geom_line()+ 
    facet_grid(variable ~ ., scale = "free_y")+ 
    labs(title="US Economic time series") 

ggplotly(econp, height = 350, width=600) 

Un suggerimento in più che vorrei aggiungere è che se si sta eseguendo questo in un notebook documento R Markdown/R, la figura stessa può anche essere necessario qualche aggiustamento in modo che il plotly (che è in realtà un htmlwidget) non lo farà rendering con uno scroller in una finestra sottodimensionata.Questo potrebbe essere fatto con i parametri fig.width e fig.height:

enter image description here

+0

Grazie per la modifica D. Woods! – onlyphantom