2017-09-20 7 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。問題は、通常、河川のプロットでは、上端ノードへのリンクが上端から離れ、下から2番目の上端からのリンクなどとなるように、エッジを編成する必要があるということです。これは、単一のノードからのエッジが交差しないことを意味します。しかし、このプロットでは、このルールは逆転しているようです(写真を参照) –

+1

私はあなたが探している(私が願っている)グラフを生成するための私の提案を見つけることができます。お知らせ下さい。 –

答えて

2

問題は解決することができます

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) 
:あなたは同様の(インタラクティブ)プロットを得ることができ networkD3sankeyNetwork機能を使用して

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

enter image description here

:プロット(nodes_yposオプション)上のノードの垂直位置を指定する編

enter image description here

+0

素晴らしい!おかげで、完璧に動作します –

関連する問題