2017-09-26 8 views
3

rCharts (딤플 라이브러리 사용)에서 dplot을 사용하여 R Shiny에서 거품 형 차트를 만들려고합니다. 이것은 모두 잘 작동하지만 특정 거품 (또는 아래 코드의 "Channel")에 특정 색상을 지정하는 데 문제가 있습니다. 우리는 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