2016-10-14 7 views
1

私はの非バイナリツリー構造を持っています。igraphオブジェクトです。ファンとしてのigraphオブジェクトのレイアウト[R]

library(igraph) 
df = data.frame(subregion = c("Africa", "Europe", "Asia", "Namibia", "Kenya", "Egypt", "Belgium", "China", "India"), 
     region = c("World", "World", "World", "Africa", "Africa", "Africa", "Europe", "Asia", "Asia")) 
df_graph = graph_from_data_frame(df, directed = F) 
plot(df_graph, layout = layout_as_tree(df_graph, root = "World")) 

enter image description here

等しく異種である同じレベルのノードで三の階層が存在します。今、私はあなたが系統樹でそれを行うことができます同じように、ファンとしてこのグラフをレイアウトしたい:それはだからしかし

enter image description here

df_graph_cl = cluster_fast_greedy(df_graph) 
plot_dendrogram(df_graph_cl, type = "fan") 
は、ノード間の本来の関係は、系統樹に保存されていませんバイナリ
ツリー。どのようにしてファングラフを樹形図に変換せずにグラフをレイアウトするかについての考えはありますか?

+0

は、一般的にバイナリ分割を持っている樹状、それはRのほとんどが機能をプロットするものです想定する。また、分割が描かれている場所は、デンドログラムに意味があります。間違った視覚化のようなものにデータを強制しようとしているのはなぜですか? – MrFlick

+0

ありがとう、MrFlick。私は約650のヒントがあり、 "ファン"のようなレイアウトを使用したいからです。通常のグラフにはこのようなレイアウトオプションはないようです。 – Hav0k

+1

本当の目標がファンを描くことであれば、なぜそれを述べなかったのですか?なぜ樹状図が最初に必要なのですか?私はあなたの質問を編集して、中間的な "解決策"を作成するのではなく、あなたの実際の出力が何であるかを明確にすることをお勧めします。 – MrFlick

答えて

0

私は今、回避策を思いつき、それを共有すると考えました。キーはNEWICK形式にグラフを変換することでした。そのために、私はグラフの深度最初の検索を実行し、NEWICK文字列を作成する少しfunctionを書く必要がありました。例のデータを使用して

は、私が今簡単に行うことができます。所望の出力生成

library(phytools) 
newick = graph_to_newick(df_graph, root = "World") 
df_tree = collapse.singles(read.newick(text = newick)) 
plot(df_tree, type = "fan") 

enter image description here

関連する問題