rCharts dplot - 将颜色映射到特定群组

3
我们正在使用rCharts(使用dimple库)中的dplot尝试在R Shiny中创建一个气泡图。这一切都很顺利,但我们遇到了一些问题,无法将特定颜色分配给特定气泡(或代码下方的“Channel”)。我们已经成功地使用defaultColors指定了一组颜色,但这些颜色是随机分配给通道的,而不是按照我们指定的方式!有人可以帮助我们正确地映射颜色吗?
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个回答

1

我不熟悉rCharts,但根据这个SO问题中的评论,颜色的排序是按计数的降序排列的。

所以你可以这样做:向你的data.frame添加一个color列,然后按你正在绘制的列对颜色进行降序排序。

虽然这只是一种解决方法,但你应该在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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接