3

次のようなデータセットがあります。

final.Df
       X1     X2        X3
1  event1 event2 event5.n1
2  event1 event2 event5.n1
3  event1 event2 event6.n1
4  event1 event3 event6.n2
5  event1 event3 event7.n2
6  event1 event3 event7.n2
7  event1 event4 event7.n3
8  event1 event4 event7.n3
9  event1 event4 event8.n3
10 event1 event4 event8.n3 

(元のデータには、最大 200 行 (約)、最大 10 列が含まれる可能性があります。この削減されたデータ セットを使用して問題を説明します。このデータ セットから、次のコードを使用してフローチャート (またはツリー) をプロットします。 -Chart) igraphR でパッケージを使用する (以下のコードは部分的に R のタブ付きテキストからのツリーチャートの作成に基づいています):

##create edges 
edges <- rbind(na.omit(final.Df[1:2]),
           do.call('rbind',
                   lapply(1:(ncol(final.Df)-2), function(i) 
                          na.omit(setNames(final.Df[(1+i):(2+i)],
                                           names(final.Df[1:2]))))))

##remove duplicated edges.
rm.ind <- c()
for (i in 2:nrow(edges)){
    if (edges[i,1] == edges[i-1,1] & edges[i,2] == edges[i-1,2]){
        rm.ind <- c(rm.ind, i) 
    }
}
edges <- edges[-rm.ind,]

## create graph
require(igraph)
g <- graph.data.frame(edges)
E(g)$curved <- 0
E(g)$label <- rep(1, nrow(edges))
plot.igraph(g, vertex.size=0, edge.arrow.size=0 ,
                  layout=-layout.reingold.tilford(g)[,2:1])

結果のプロットは、この投稿に添付されています。

この縮小されたデータセットを使用すると、プロットは問題ないように見えます。ただし、より大きなデータ セットを使用すると、イベント (event5、event6 など) が「重なり」始め、グラフが読みにくくなります。したがって、エッジの位置または分離を制御する方法があるかどうか疑問に思っていました。また、読者は、ラベル (この場合はすべて番号 1) がエッジの上にあることに気付くでしょう。理想的には、ラベルを端からはみ出させたいと思います (パッケージを使用する人もいると読みましたが、(?)qgraphを使用してすべてを実行できると想定しています)。igraph

tkplot結果のプロットのサイズを制御できるように見えるので、 を使用してみましたが、次のエラーが表示されます。

tkplot(g, canvas.width=450, canvas.height=450, vertex.size=0, edge.arrow.size=0 ,
                   layout=-layout.reingold.tilford(g)[,2:1])
Loading required package: tcltk
Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") : 
  [tcl] expected integer but got "font266".

私はスタックオーバーフローで、このエラーがいくつかの残りのtcl/tk 8.5インストールに関係している可能性があることを読みました(rmsパッケージから「検証」を実行するとTCLKエラーが発生します)が、確認しましたが、私の場合ではありません(したがって、このエラーを解決する方法。)

この段階では、グラフ プロットの美学を制御するために専門家の助けが必要です。要約する:

1-ここに示されているプロットのエッジ間の位置や角度を制御するにはどうすればよいですか? もう 1 つのオプションは、クォーツ プロット ウィンドウの全面をより適切に使用することです。

2-エッジに関連付けられたラベルの位置を制御するにはどうすればよいですか?

3- それほど重要ではありませんが、このtkplotエラー メッセージはどこから来たのですか?

前もって感謝します

4

0 に答える 0