2016-06-02 9 views
3

question을 수신 할 때 R 노드의 GoogleVis 패키지를 사용하는 Sankey 차트에서 노드에 색상 세트를 할당하고 그라디언트 모드와 연결하려고합니다. 문제는 내가 3 세트의 각 노드에 동일한 범주가 있으며 협력하도록하는 데 어려움을 겪고 있다는 것입니다.R의 googleVis sankey 차트에서 노드 및 링크 색상 지정

datSK <- data.frame(From=c(rep("A1",3), rep("B1", 3), rep("C1", 3), rep("A2", 3), rep("B2", 3), rep("C2",3)), 
       To=c(rep(c("A2", "B2", "C2"), 3), rep(c("A3", "B3", "C3"), 3)), 
       Weight=c(5,7,6,2,9,4,3,4,5)) 

차트의 3 가지 다른 부분에 나타나는 노드 A, B, C가 같은 색 (각각 파란색, 주황색, 녹색)으로 나타나길 원합니다.

plot(gvisSankey(datSK, from="From", 
     to="To", weight="Weight", 
     options=list(sankey="{ 
        link: { colorMode: 'gradient', colors: ['blue', 'orange', 'green']}, 
        node: { colors: ['blue', 'orange', 'green']}}"))) 

불행히도 색상을 지정하는 방법을 알 수 없습니다.

+0

나는 이것에 대한 답을 알고 싶다! – svenhalvorson

답변

3

그것은 년, 나는 여전히 대답을 필요 여부 모르고있다 그러나 이것은 내가 찾은 것입니다 :

plot(gvisSankey(datSK, from="From", 
     to="To", weight="Weight", 
     options=list(sankey="{ 
        link: { colorMode: 'gradient'}, 
        node: { colors: ['blue', 'blue', 'orange', 
            'green','orange', 'green', 
            'blue','orange','green']} 
          }"))) 

의 외관의 순서에 따라 색상을 지정합니다 구글의 Sankey 차트 노드. 다음은 노드의 모양 순서를 결정하는 방법입니다. 기본적으로 노드 연결 목록 문자열을 만들고 분할하고 고유 노드를 추출한 다음 색상을 할당합니다.

# Create a stringlist of node pairs 
nodestringlist <- paste(datSK$From,datSK$To, collapse=' ') 

# Split them up 
nodestringvector <- strsplit(nodestringlist, split =' ') 

# Find the unique nodes in order they appear 
node_order <- unique(nodestringvector[[1]]) 
#output: "A1" "A2" "B2" "C2" "B1" "C1" "A3" "B3" "C3" 

이게 원하는가요?

+1

지금 기억이 안납니다. :)하지만 @svenhalvorson이 응답을 필요로하므로 잘하면 그것은 그를 도울 것입니다. 또한, ggforce를 통해 궁극적으로 사용할 수있는 sankey 차트의 ggplot 버전이 있다고 생각합니다. – Phil

+0

내 대답을 표시해 주셔서 감사합니다. 그 gplplot의 sankey 좋은 생각처럼 들리 네요. 나는 그것에 대해서도 살펴볼 것이다. – addicted