2017-05-05 7 views
0

Ich verwende Plotly (Version 4.6.0) in R (Version 3.4), um zwei Linien mit Konfidenzintervallen um sie herum zu erstellen. Die Legende wird nicht angezeigt. Jeder weiß was los ist?Plotly zeigt keine Legende für zwei Konfidenzintervalle in R

Hier ist das Grundstück: Output from plotly without legend

Es scheint, dass die Legende Schalter ignoriert wird. Es ist falsch für die gefüllten (Konfidenzintervalle) und wahr für die Hauptdiagramme. Wenn Sie alle auf "True" setzen, erhalten Sie sechs Legendeneinträge, aber nur zwei.

Hier ist der Code:

plot_ly(x = ~observed$time, y = ~observed$interval_upper, 
    type = 'scatter', 
    mode = 'lines', 
    line = list(color = 'transparent'), 
    showlegend = FALSE, 
    name = 'Upper bound') 

    %>% add_trace(x = ~observed$time, y = ~observed$interval_lower, 
    type = 'scatter', 
    mode = 'lines', 
    fill = 'tonexty', 
    fillcolor='rgba(255,127,14,0.2)', 
    line = list(color = 'transparent'), 
    showlegend = FALSE, 
    name = 'Lower bound') 

    %>% add_trace(x = ~observed$time, y = ~observed$observed_power, 
    type = 'scatter', 
    mode = 'lines', 
    line = list(color='rgb(255,127,14)'), 
    showlegend = TRUE, 
    name = 'Observed') 

    %>% add_trace(x = ~forecast$time, y = ~forecast$interval_upper, 
    type = 'scatter', 
    mode = 'lines', 
    line = list(color = 'transparent'), 
    showlegend = FALSE, 
    name = 'Upper bound') 

    %>% add_trace(x = ~forecast$time, y = ~forecast$interval_lower, 
    type = 'scatter', 
    mode = 'lines', 
    fill = 'tonexty', 
    fillcolor='rgba(31,119,180,0.2)', 
    line = list(color = 'transparent'), 
    showlegend = FALSE, 
    name = 'Lower bound') 

    %>% add_trace(x = ~forecast$time, y = ~forecast$baseline_power, 
    type = 'scatter', 
    mode = 'lines', 
    line = list(color='rgb(31,119,180)'), 
    showlegend = TRUE, 
    name = 'Forecast') 

    %>% layout(legend = list(x = 0.80, y = 0.90)) 

Antwort

1

Der erste Showlegend in plot_ly sollte immer TRUE sein, sonst wird es die andere Maske, versuchen, die Spuren zu tauschen.

Dieses Beispiel nehmen von plotly Website das Problem zeigen (https://plot.ly/r/legend/)

library(plotly) 
library(tidyr) 
library(plyr) 

data <- spread(Orange, Tree, circumference) 
data <- rename(data, c("1" = "Tree1", "2" = "Tree2", "3" = "Tree3", "4" = "Tree4", "5" = "Tree5")) 

#hiding entries 

p <- plot_ly(data, x = ~age, y = ~Tree1, type = 'scatter', mode = 'lines', name = 'Tree 1') %>% 
    add_trace(y = ~Tree2, name = 'Tree 2') %>% 
    add_trace(y = ~Tree3, name = 'Tree 3', showlegend = FALSE) %>% 
    add_trace(y = ~Tree4, name = 'Tree 4') %>% 
    add_trace(y = ~Tree5, name = 'Tree 5') 

##no legend 

p <- plot_ly(data, x = ~age, y = ~Tree1, type = 'scatter', mode = 'lines', name = 'Tree 1',showlegend = FALSE) %>% 
    add_trace(y = ~Tree2, name = 'Tree 2') %>% 
    add_trace(y = ~Tree3, name = 'Tree 3', showlegend = TRUE) %>% 
    add_trace(y = ~Tree4, name = 'Tree 4') %>% 
    add_trace(y = ~Tree5, name = 'Tree 5') 
+0

Danke. Das hat den Trick gemacht. – fifthace

+0

froh, das zu hören –