2017-09-25 3 views
2

Wie lautet der Befehl R plot_ly, um einem Plotly-Diagramm horizontale Signifikanzbalken (und Sterne) hinzuzufügen? Die Antworten auf "How to draw the boxplot with significant level?" und "Put stars on ggplot barplots and boxplots - to indicate the level of significance (p-value)" bieten guten Code für ggplot.Boxplot-Signifikanzindikatorzeilen und Sternchen in R plot_ly hinzufügen

Zuerst bestimmen Bedeutung:

library(lsmeans) 
lsmeans(lm(data = iris, Sepal.Width ~ Species), pairwise ~ Species) 
    $contrasts 
    contrast    estimate   SE df t.ratio p.value 
    setosa - versicolor  0.658 0.06793755 147 9.685 <.0001 
    setosa - virginica  0.454 0.06793755 147 6.683 <.0001 
    versicolor - virginica -0.204 0.06793755 147 -3.003 0.0088 

Hier ist beispielsweise R-Code für das Grundstück. Wie füge ich Linien und Sterne hinzu?

library(plotly) 
p <- plot_ly() 
p <- add_boxplot(p, data = iris, x = ~Species, y = ~Sepal.Width, 
       color = ~Species, boxpoints = "all", jitter = 0.3, pointpos = 0) 
# p <- add_paths(p, data = iris, ???) 
# p <- add_line(p, data = iris, ???) 
p 
+1

Wenn Sie über Anmerkungen tun Makeln nicht mehr funktionieren (die Bedeutung Indikator bleibt stehen, solange der Trace weg ist. Jede der Möglichkeiten wird ziemlich hacky und eine einmalige Lösung sein, eine Spur hinzufügen, die als ein Indikator funktioniert, Anmerkungen hinzufügt, usw. –

+0

@MaximilianPeters, danke für den Kommentar. Es klingt so, als würden Sie R Plotly nicht empfehlen, diese Signifikanzindikatoren hinzuzufügen. Ich werde sie in Inkscape oder Illustrator hinzufügen und als SVG speichern. –

+0

Wenn Sie die Trace-Umschaltung deaktivieren und Ihnen eine Hacky-Lösung gefällt, könnte ich eine hinzufügen. –

Antwort

0

Horrible hacky Lösung, die die gewünschte Ausgabe

  • Hinzufügen der Klammern als separate Spur gibt
  • Addiert man die Bedeutung Markierungen als Markierungen auf der versteckten Bar Plots
  • Ausblenden der Helfer kategoriale Werte über layout

Das Problem w Bei Verwendung von Annotationen ist es nicht möglich, das Sternchen an die richtige Stelle zu setzen, drei Boxplots bedeuten drei kategorische x-Werte. Die neuen x-Werte werden über das Balkendiagramm hinzugefügt.

enter image description here

library(plotly) 
p <- plot_ly() 
p <- add_bars(p, 
       x = c('setosa', 'setosa0', 'versicolor', 'versicolor0', 'virginica'), 
       y = c(3.5, 4.6, 2.5, 4.1, 3), 
       opacity=1, 
       showlegend = F, 
       marker=list(line = list(color='rgba(0,0,0,0'), 
          color = 'rgba(0,0,0,0'), 
       text = c('', '**', '', '*', ''), 
       textposition = 'outside', 
       legendgroup = "1" 
) 
p <- add_lines(p, 
       x = c('setosa', 'setosa', 'versicolor', 'versicolor'), 
       y = c(4.5, 4.6, 4.6, 4.5), 
       showlegend = F, 
       line = list(color = 'black'), 
       legendgroup = "1", 
       hoverinfo = 'none' 
) 

p <- add_lines(p, 
       x = c('versicolor', 'versicolor', 'virginica', 'virginica'), 
       y = c(4.0, 4.1, 4.1, 4.0), 
       showlegend = F, 
       line = list(color = 'black'), 
       legendgroup = "1", 
       hoverinfo = 'none' 
) 


p <- add_boxplot(p, data = iris, x = ~Species, y = ~Sepal.Width, 
       color = ~Species, boxpoints = "all", jitter = 0.3, pointpos = 0, 
       legendgroup="1") 


p <- layout(p, 
      xaxis = list(tickmode = 'array', 
         tickvals = c('setosa', 'sf', 'versicolor', 'vet', 'virginica'), 
         ticktext = c('setosa', '', 'versicolor', '', 'virginica')), 
      yaxis = list(range = c(0, 5)) 
      ) 
p 

Die folgende Grafik zeigt alle versteckten Spuren verwendet, um das Diagramm zu erhalten rechts:

enter image description here

+0

Danke für die clevere und detaillierte Erklärung! Ich habe versucht, eine Funktion zu machen, habe aber aufgegeben, weil die Methode zu eigensinnig ist. Ich frage mich, wie schwer es wäre, diese Funktion zu Plotly hinzuzufügen? (Ihre Antwort hat ein Formatierungsproblem mit dem Code.) –

+1

@KayleSawyer: Ich hoffe, dass das Plotly daran arbeitet. Vielen Dank, dass Sie den Formatierungsfehler bemerkt haben, und Sie haben bemerkt, was eine einzelne fehlende neue Zeile kann;) –

Verwandte Themen