2016-06-09 3 views
1

habe ich eine Zeitreihe mit verschiedenen Kategorien (Facetten), und ich versuche, ein Diagramm mit der facet_wrap Funktion von ggplot2 zu erstellen und auf plotly hochladen.Fehler Plotten Diagramm mit facet_wrap und Skalen = „frei“ in plotly

Wenn ich scales = "fixed" eingestellt habe, habe ich kein Problem: Die Grafik sieht gut aus auf meinem Computer und auf plotly. Aber wenn ich scales = "free", wie in dem Code unten, dann die ggplot2 auf meinem Computer sieht gut aus, aber die plotly Version wird nicht richtig angezeigt (entweder auf meinem Computer oder im Internet).

Hier ist ein Beispielcode; Ich erstelle einige zufällige Werte für 12 Staaten, die einen Zeitraum von 16 Jahren von 2000 bis 2015 abdecken, und ich möchte eine Zeitreihe dieser Werte zeichnen, wobei jeder Staat sein eigenes Diagramm und seine eigene y-Achse hat.

library(ggplot2) 
library(plotly) 

set.seed(1) 
states = sample(state.name, 12) ## create random list of 12 states 

## create random data with values for state and by year 
dat <- data.frame(Year = rep(2000:2015, times = 12), 
       State = rep(states, each = 16), 
       Value = rnorm((12*16), mean = 5, sd = 2)) 

## plot data with facet_wrap for each state 
p <- ggplot(dat, aes(Year, Value)) + geom_line() + 
    facet_wrap(~ State, ncol = 4, scales = "free") 
p 
ggplotly(p) 

Der ggplot2 Befehl (p) zeigt wie erwartet:

enter image description here

Aber die ggplotly(p) verzerrt:

enter image description here

Soweit ich das beurteilen kann, da war ein vorheriger Thread zu diesem Thema, aber es wurde nicht gelöst:

Plotly Facets not translating properly

würde ich jede Hilfe zu diesem Thema zu schätzen wissen.

+0

Ich hoffe, dass dies mit ggplot bald gelöst wird ... Ich habe das gleiche Problem, und möchte mit ggplot bleiben! – Nova

Antwort

2

Wenn Sie für eine Alternative offen sind, können Sie mit nativen plotly mit subplot versuchen. Versuchen Sie:

dat$id <- as.integer(dat$State) 
p <- plot_ly(dat, x = Year, y = Value, group = State, 
      xaxis = paste0("x", id), marker=list(color="black")) 
p <- layout(
    subplot(p, nrows=3, margin = 0.05), 
    xaxis = list(title = "Arizona"), 
    xaxis2 = list(title = "Connecticut"), 
    xaxis3 = list(title = "Florida"), 
    xaxis4 = list(title = "Georgia"), 
    xaxis5 = list(title = "Indiana"), 
    xaxis6 = list(title = "Maine"), 
    xaxis7 = list(title = "Nebraska"), 
    xaxis8 = list(title = "Nevada"), 
    xaxis9 = list(title = "New Hampshire"), 
    xaxis10 = list(title = "South Dakota"), 
    xaxis11 = list(title = "Tennessee"), 
    xaxis12 = list(title = "Texas"), 

    yaxis = list(title = "Value"), 
    yaxis2 = list(title = ""), 
    yaxis3 = list(title = ""), 
    yaxis4 = list(title = ""), 
    yaxis5 = list(title = "Value"), 
    yaxis6 = list(title = ""), 
    yaxis7 = list(title = ""), 
    yaxis8 = list(title = ""), 
    yaxis9 = list(title = "Value"), 
    yaxis10 = list(title = ""), 
    yaxis11 = list(title = ""), 
    yaxis12 = list(title = ""), showlegend = FALSE) 
p 
+0

Vielen Dank für diesen Vorschlag - Ich scheute Abstand von Subplot, weil es schien ein bisschen mehr Spezifikation erfordern, aber es könnte der einzige Weg sein. Nochmals vielen Dank für die Antwort. –

+0

Wenn es sich um die Lösung für Sie handelt, vergessen Sie nicht, die Antwort oder +1 zu akzeptieren :-) – MLavoie