2017-09-26 47 views
3

我們在rCharts中使用dplot(使用凹坑庫)嘗試在R Shiny中創建氣泡圖。這一切運行良好,但我們無法爲特定的氣泡(或下面的代碼中的「通道」)分配特定的顏色。我們已經設法使用defaultColors指定一組顏色,但這些顏色是隨機分配給頻道的,而不是我們指定的方式!rCharts dplot - 將顏色映射到特定組

任何人都可以幫助我們得到colo(u)rs正確映射嗎?

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) 

回答

1

我不熟悉的rCharts,但根據the comments in this SO question,顏色的排序是按降序計數的順序。

所以你可以做的是:添加color列到你的data.frame,然後由你通過繪製列降序排序的顏色。

這只是一個解決方法,但你應該在github上提交一個問題。

快速例如:

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