我们在rCharts中使用dplot(使用凹坑库)尝试在R Shiny中创建气泡图。这一切都运行良好,但我们无法为特定的气泡(或下面的代码中的“通道”)分配特定的颜色。我们设法使用defaultColors指定一组颜色,但这些颜色是随机分配给Channels的,而不是我们指定的方式!
任何人都可以帮我们正确地映射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)
答案 0 :(得分: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:
R3: