2017-09-26 3 views
3

Wir verwenden dplot in rCharts (unter Verwendung der Dimple-Bibliothek), um zu versuchen, ein Blasendiagramm in R Shiny zu erstellen. Dies funktioniert alles gut, aber wir haben Probleme beim Zuweisen bestimmter Farben zu bestimmten Bubbles (oder "Channel" im folgenden Code). Wir haben es geschafft, eine Reihe von Farben mit defaultColors zu spezifizieren, aber diese werden den Channels nach dem Zufallsprinzip zugewiesen, nicht wie wir es spezifiziert haben!rCharts dplot - Zuordnung von Farbe zu bestimmten Gruppen

Kann uns jemand helfen, die Colo (u) rs korrekt zu kartieren?

output$BubbleChart2 <- renderChart2({ 
    Channel <- c('TV','Radio','Press') 
    Spend <- c(100000,50000,20000) 
    Revenue <- c(500000,100000,30000) 
    df <- data.frame(Channel,Spend,Revenue) 
    df$ROI <- (df$Revenue/df$Spend) 
    r2 <-dPlot(x="Revenue",y="ROI",type="bubble",groups="Channel",z="Spend",data=df,width=750) 
    r2$defaultColors("#!d3.scale.ordinal().range(['#C2E588','#FDC382','#FC9A8F']).domain(['TV','Radio','Press'])!#") 
    r2$xAxis(type = "addMeasureAxis") 
    r2$yAxis(type = "addMeasureAxis") 
    r2$zAxis(type = "addMeasureAxis") 
    r2$legend(x = 200, 
       y = 7, 
       width = 400, 
       height = 20, 
       horizontalAlign = "center")  
    return(r2) 

Antwort

1

Ich bin nicht vertraut mit rCharts, sondern nach the comments in this SO question, ist die Reihenfolge der Farben, um die Zählung in absteigender Reihenfolge.

Sie können also eine color Spalte zu Ihrem data.frame hinzufügen und dann die Farben in absteigender Reihenfolge nach der Spalte sortieren, in der Sie zeichnen.

Es ist nur ein Workaround, aber Sie sollten wahrscheinlich ein Problem auf GitHub einreichen.

Schnell Beispiel:

library(rCharts) 

Channel <- c('TV','Radio','Press') 
Spend <- c(100000,50000,20000) 
Revenue <- c(500000,100000,30000) 
df <- data.frame(Channel,Spend,Revenue) 
df$ROI <- (df$Revenue/df$Spend) 
df$Colors <- c("'#C2E588'","'#FDC382'","'#FC9A8F'") 

col_order <- df[order(-Revenue), "Colors"] %>% paste(collapse = ",") 
r2 <- dPlot(x="Revenue",y="ROI",type="bubble",groups="Channel",z="Spend",data=df,width=750) 
r2$defaultColors(sprintf("#!d3.scale.ordinal().range([%s])!#", col_order)) 
r2 

df$Revenue <- c(5000,100000,30000) 

r3 <- dPlot(x="Revenue",y="ROI",type="bubble",groups="Channel",z="Spend",data=df,width=750) 
r3$defaultColors(sprintf("#!d3.scale.ordinal().range([%s])!#", col_order)) 
r3 

R2:

r2

r3:

r3

Verwandte Themen