2016-09-29 12 views
1

Ich habe eine gruppierte Balkendiagramm und ich versuche, die Farben für jede der Variablen oder Spalten anzupassen. Ich konnte es zum ersten Mal tun, aber wenn ich müde wäre, würde sich mit der Sekunde ein dritter Balken füllen.Benutzerdefinierte Farben Bargraph Plotly - R

Was wäre die beste Methode, um darüber zu gehen? Mein Code ist unten:

SpendOpt <- plot_ly(
    x= TV_Attribute_Solver$Channel, 
    y= TV_Attribute_Solver$Current.spend, 
    name="Current Spend", 
    type = "bar", 
    marker = list(color = "#33aFFF")) 


SpendOpt <- add_trace(
    SpendOpt, 
    x=TV_Attribute_Solver$Channel, 
    y=TV_Attribute_Solver$Optimized.Spend, 
    name = "Optimized Spend", 
    type = "bar" 
) 

die Daten wären:

> dput(data) 

structure(list(Channel = c("13th Street", "7 TWO Sydney", "7MATE Sydney", 
"Arena", "ATN-7 Sydney", "BBC Knowledge"), Current.spend = c(2782L, 
2075L, 990L, 1194L, 32534L, 356L), Optimized.Spend = c(3060.2, 
2282.5, 891, 1313.4, 33410.127, 391.344)), .Names = c("Channel", 
"Current.spend", "Optimized.Spend"), class = "data.frame", row.names = c(NA, 
-6L)) 

> data 
     Channel Current.spend Optimized.Spend 
1 13th Street   2782  3060.200 
2 7 TWO Sydney   2075  2282.500 
3 7MATE Sydney   990   891.000 
4   Arena   1194  1313.400 
5 ATN-7 Sydney   32534  33410.127 
6 BBC Knowledge   356   391.344 

Auch ist es eine Möglichkeit, mehr Raum zwischen den beiden Gruppierungen zu schaffen? danke

+0

Ich hatte 'plotly' für' R' nicht benutzt, also danke für die indirekte Aufforderung! Ich würde mit dieser Frage herumspielen, aber das Dataset, das Sie verwenden, ist nicht klar. Wenn es lokal ist, bitte ein reproduzierbares Beispiel veröffentlichen, damit andere versuchen können, zu helfen. Verwenden Sie zum Beispiel 'mtcars'? Außerdem finde ich es wünschenswert, zu veröffentlichen, was Sie gegen das bekommen, was Sie wollen. Ihre Frage fragt nach der Farbe, aber Sie enden mit der Frage nach "mehr Platz". Mehr Unterscheidung zwischen Farben? Mehr Abstand Trennung? Eine visuelle Hilfe wäre hilfreich. – Hendy

+0

Danke und ich habe die Frage mit dem Datensatz aktualisiert. Die Bars wären aktuelle Ausgaben und optimierte Ausgaben und ich möchte für jede Spalte eine eigene Farbe haben. Ich konnte es für die erste Bar mit Marker schaffen, leider konnte ich die zweite Bar nicht schaffen. –

+0

1) Ich habe eine 'dput()' -Version hinzugefügt (einfacher als manuelles Eintippen in der Tabellenansicht) und 2) Ich bekomme nur paarweise blaue Balken, wenn ich das oben ausführen. Soll ich etwas anderes sehen? – Hendy

Antwort

0

Ich dachte, ich würde einfach weitermachen und eine Antwort hinzufügen. Ich habe nur plotly zum ersten Mal überhaupt verwendet, also bin ich mir nicht wirklich sicher, wie der Code funktioniert. Das heißt, wenn ich die Frage richtig verstehe, wollen Sie Farben basierend darauf, ob es Optimized.spend oder Current.spend ist. Ich streckte genau das, was Sie oben auf den zweiten Teil tat, und ich bekomme diese:

SpendOpt <- plot_ly(
    x= data$Channel, 
    y= data$Current.spend, 
    name="Current Spend", 
    type = "bar", 
    marker = list(color = "#33aFFF") 
) 


SpendOpt <- add_trace(
    SpendOpt, 
    x=data$Channel, 
    y=data$Optimized.Spend, 
    name = "Optimized Spend", 
    type = "bar", 
    marker = list(color = "#afafaf") 
) 

SpendOpt 

ich diese:

enter image description here

Wenn das, was Sie erwartet haben, vielleicht etwas anderes los ist mit deine Einrichtung. Ich sehe den erwähnten "dritten Balken" nicht. Sie können versuchen, ls() ausprobieren, um zu sehen, welche Variablen Sie erstellt haben, oder etwas anderes überprüfen.

Wenn dies nicht ist, was Sie versuchten zu erreichen, fühlen Sie sich frei zu kommentieren/zu klären. Das geht auf meinen Vorschlag in den Kommentaren zurück, dass reproduzierbare Beispiele und Visuals so viel lauter sind als Worte: Machen Sie einen Screenshot von dem, was Sie bekommen, und markieren Sie ihn zum Beispiel mit Labels oder handgezeichneten Korrekturen im Editor Ihrer Wahl.

+0

Danke, es hat endlich angefangen zu arbeiten! –