2017-09-26 6 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によると、色の順序は、カウントの降順です。

あなたができることは、data.framecolor列を追加し、プロットしている列で降順で色を並べ替えることです。

ただの回避策ですが、おそらく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

関連する問題