2017-01-02 1 views
0

Wenn ohne add_trace einen farbigen BarPlot erstellen, einige Etikettenfarben in der Legende bleiben schwarz:Fehlende Etikettenfarben in BarPlot wenn nicht add_trace mit

colors <- c("blue","grey", "red", "yellow") 
    data <- data.frame(time = factor(c("2010", "2011", "2010", "2011", "2010", "2011")), 
        value = c(10, 20, 30, 40, 50, 60), 
        type = c("A", "B", "C", "A", "B", "C")) 

    data %>% 
    plot_ly(
     type = "bar", 
     x = ~time, 
     y = ~value, 
     color = ~type, 
     colors = colors) %>% 
    layout(barmode = "relative") 

Das gleiche Problem kann entdeckt werden, wenn „Marker = Liste mit (Farbe = Farben) "Option statt Farben Option direkt. Wenn stattdessen add_trace verwendet wird, scheint alles gut zu funktionieren. Aber da die Anzahl der Farbstufen nicht immer im Voraus bekannt ist, fühlt sich eine Lösung, die add_trace (innerhalb einer Schleife) verwendet, unbehaglich.

+0

Sie meinen Farben in der Legende? – mtoto

+0

ja, meine erste Frage bearbeitet, um dies ein wenig klarer zu machen –

Antwort

0

Versuchen Sie folgendes:

h<-ggplot(data, aes(x=time, y=value, fill=type))+geom_bar(stat = "identity") 
ggplotly() 
0

Als Alternative, vielleicht könnten Sie Ihre Daten-Set von lang auf breit umformen. Hier

ist der Code:

library(reshape2) 
data_wide <- dcast(data, time ~ type, value.var="value") 
plot_ly(data_wide, x=~time) %>% 
     add_bars(y = ~A, name = "A", color= I("blue")) %>% 
     add_bars(y = ~B, name = "B", color= I("red")) %>% 
     add_bars(y = ~C, name = "C", color= I("yellow")) %>% 
     layout(barmode = "stack", yaxis = list(title ="value"))