2016-05-15 9 views
9

Ich habe Probleme mit dem plotly R-Paket. Ich bin neu zu plott, aber ich liebte, dass ich ggplot-artige Syntax verwenden konnte, also versuche ich, es zum Funktionieren zu bringen.Größe plotly ändern R ggplotly

Ich habe ein facettiertes Diagramm erstellt, in dem Sie den Mauszeiger über einen Datenpunkt bewegen und Details zu diesem Datensatz anzeigen können. Ich bin sehr glücklich mit der Handlung, aber ich würde gerne die Größe ändern, so dass die y-Achse jeder Handlung nicht so kurz ist, da ich gerne die Höhe und Breite der gesamten Handlung anpassen würde.

Wie ist, kann ich nicht herausfinden, wie die Standardgrößen außer Kraft zu setzen und Ich ziehe mir die Haare aus, weil alle Beispiele I Verwendung plot_ly finden() statt ggplotly(). Ich würde lieber nicht die Handlung neu aufbauen, nur um die Größe anzupassen, wenn es nicht nötig ist.

Der Code, den ich derzeit ausgeführt habe, ist wirklich einfach:

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

Sie können genau sehen, was mit hier arbeite ich: http://rpubs.com/dbouquin/180894

Ich habe versucht, die Handlung Einstellung zu zeigen, zwei Reihen Plots haben aber immer noch Probleme, weil die Jahr-Labels zusammengeschlagen werden. Die Größenänderung scheint alles zu sein, was ich brauche.

+0

Ich bin nicht sicher, ob dies ist, was Sie suchen, aber man konnte auf Ihr plotly Grundstück hinzu:%>% Layout (Autosize = F, Breite = 1000, Höhe = 600) und passen Sie die Breite und Höhe des Plots wie gewünscht an. – MLavoie

+0

Danke für den Vorschlag, aber das funktioniert nicht. Wenn Sie das Layout auf diese Weise anpassen, ändert sich nur die Größe des Zeichenbereichs, aber auch die Kopfzeilen werden gestreckt. Die Graphen selbst bleiben nahezu gleich – Daina

+0

Ist scales = "free_y" was du suchst? Es ist ein Argument für die Funktion facet_wrap, und ggplotly() übersetzt es. –

Antwort

5

Hier ist ein Workaround. Scheint in R-Markdown-Dokumenten zu arbeiten, was ich vermute, ist was du brauchst? Es bewahrt noch die ggplot2 Syntax verwendet aber plotly_build() statt 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 
``` 

Sieht aus wie so:

enter image description here

enter image description here

+0

In der aktuellen Version von pltlly für plotly_build hat das resultierende Objekt keine $ layout $ width oder $ layout $ height Eigenschaft. – par

3

Genau wie plot_ly(), ggplotly() hat eine height und ein width Argument, siehe ?ggplotly.

Im Allgemeinen ist es ratsam, immer height/width einzustellen. Wenn Sie dies nicht tun und Ihre Grafik mit einer anderen Person teilen, kann die Größe je nach Kontext unterschiedlich sein.

Dies ist besonders wichtig für ggplotly(). Um die Größe der Dinge zu konvertieren, muss sie zur Druckzeit eine height/width annehmen. Wenn Sie diese nicht angeben, wird die Größe Ihres R-Grafikgeräts verwendet, und wir können nicht immer garantieren, dass das Größenänderungsverhalten vollständig konsistent mit dem ist, was Sie von Ihrem R-Grafikgerät erhalten.

1

Ich empfehle Ihnen, auf die neueste Version von Plotly zu aktualisieren.

Um zu sehen, welche Version Sie sind auf: packageVersion("plotly")

können Sie dann die width und height Parameter an Ihre ggplotly() Funktionsaufrufe hinzu.

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) 

Ein zusätzlicher Vorschlag, den ich möchte hinzufügen, dass, wenn Sie diese in einem R Markdown Dokument/R Notebook laufen lassen, die Figur selbst auch eine gewisse Anpassung benötigen, um Ihre plotly (das ist wirklich ein htmlwidget) nicht Render mit einem Scroller in einem unterdimensionierten Fenster.Dies könnte mit den fig.width und fig.height Parametern erfolgen:

enter image description here

+0

Danke für die Bearbeitung D. Woods! – onlyphantom

Verwandte Themen