2017-09-20 14 views
0

riverplot을 생성하려고하는데, 가장자리와 같이 보이는 출력은 각 막대의 잘못된면에서 나오기 때문에 해석하기가 어렵습니다. enter image description here내 강변이 왜 그렇게 이상하게 보입니까?

내가 사용하는 데이터는 다음과 같습니다

가장자리 :

 N1  N2  Value 
1  off off.1 0.77149877 
2 weak off.1 0.47474747 
3 medium off.1 0.17537313 
4 strong off.1 0.03603604 
5  off low.1 0.06879607 
6 weak low.1 0.26262626 
7 medium low.1 0.13432836 
8 strong low.1 0.01351351 
9  off medium.1 0.12530713 
10 weak medium.1 0.23232323 
11 medium medium.1 0.54850746 
12 strong medium.1 0.20720721 
13 off strong.1 0.03439803 
14 weak strong.1 0.03030303 
15 medium strong.1 0.14179104 
16 strong strong.1 0.74324324 

노드 :

 ID x y 
1  off 1 4 
2  weak 1 3 
3 medium 1 2 
4 strong 1 1 
5 off.1 2 4 
6 low.1 2 3 
7 medium.1 2 2 
8 strong.1 2 1 

과 줄거리에 대한 코드는 다음과 같습니다

library(RColorBrewer) 
library(riverplot) 
palette = paste0(brewer.pal(5, "Set2"), "60") 
styles = lapply(nodes$y, function(n) { 
    list(col = palette[n+1], lty = 0, textcol = "black") 
}) 
names(styles) = nodes$ID 
nlabels <- c(off = 'off', weak = 'weak', medium = 'medium',strong = 'strong', 
      off.1 = 'off', weak.1 = 'weak', medium.1 = 'medium', strong.1 = 'strong') 
x <- makeRiver(nodes, edges, node_styles = styles, node_labels = nlabels) 
plot(x) 
+0

문제를 자세히 설명해 주시겠습니까? –

+0

안녕하세요 @MarcoSandri. 문제는 대개 강변에서 최상부 노드에 대한 링크가 상단에서 떠오르고 두 번째는 두 번째 상단에서 떠나는 방식으로 가장자리를 구성해야한다는 것입니다. 즉, 단일 노드의 가장자리가 교차하지 않습니다. 그러나이 그림에서이 규칙은 뒤집어 진 것처럼 보입니다 (사진 참조) –

+1

아래에서 그래프를 생성하기위한 제안을 찾을 수 있습니다. 알려줘. –

답변

2

문제는 해결 될 수 있습니다. 에드는 플롯에 노드의 수직 위치를 지정 (nodes_ypos 옵션) :

x <- makeRiver(nodes, edges, node_styles = styles, node_labels = nlabels, 
       node_ypos=1:4) 
plot(x) 

enter image description here

sankeyNetwork 기능을 사용 networkD3 당신은 유사한 (대화 형) 플롯 얻을 수 있습니다 :

edges <- read.table(text=" 
n  N1  N2  Value 
1  off off.1 0.77149877 
2 weak off.1 0.47474747 
3 medium off.1 0.17537313 
4 strong off.1 0.03603604 
5  off low.1 0.06879607 
6 weak low.1 0.26262626 
7 medium low.1 0.13432836 
8 strong low.1 0.01351351 
9  off medium.1 0.12530713 
10 weak medium.1 0.23232323 
11 medium medium.1 0.54850746 
12 strong medium.1 0.20720721 
13 off strong.1 0.03439803 
14 weak strong.1 0.03030303 
15 medium strong.1 0.14179104 
16 strong strong.1 0.74324324 
", header=T) 

nodes <- read.table(text=" 
n  ID x y 
1  off 1 4 
2  weak 1 3 
3 medium 1 2 
4 strong 1 1 
5 off.1 2 4 
6 low.1 2 3 
7 medium.1 2 2 
8 strong.1 2 1 
", header=T) 

nodes$ID <- as.character(nodes$ID) 
edges$N1 <- as.numeric(factor(edges$N1, levels=c("off","weak","medium","strong")))-1 
edges$N2 <- as.numeric(factor(edges$N2, levels=c("off.1","low.1","medium.1","strong.1")))+3 

library(networkD3) 
sankeyNetwork(Links = edges, Nodes = nodes, Source = "N1", 
      Target = "N2", Value = "Value", NodeID = "ID", 
      iterations=0, 
      units = "", fontSize = 12, nodeWidth = 30) 

enter image description here

+0

위대한! 감사합니다, 완벽하게 작동합니다. –