|
カテゴリ:Python
Python から Graphviz を使う( pydot を日本語で出力)(6) でサブグラフを描いてみたが、subgraph の中にサブグラフがあるときはうまく描けるだろうかと試してみる。Graphviz のサイトにある Undirected Graph Clusters のようなものを。グラフの中にサブグラフが3つ。そのうち1つは他のサブグラフの中にある。骨組みとしては次のようなものになる。
なので、基本としては Python から Graphviz を使う( pydot を日本語で出力)(6) でやったようにサブグラフ A, B を作って、さらにその中に C を作ればよいかなと。まずは、プリミティブにグラフを作って、サブグラフをつないでみる。
最後の行の、書き出し用のプログラムの指定は fdp を使わないと、ノードとサブグラフ間のエッジや、サブグラフ同士のエッジを描くことができないようだ。とりあえず、こんな感じになる(クリックで拡大)。 また、サブグラフを端点とするエッジ を描くやり方もあるようだ。
とかするようだ。 この場合のグラフ書き出しは fdp でなく、dot でいけるようだ。ただし、サブグラフとサブグラフを端点としてつないでいるエッジも、見かけ上はサブグラフとサブグラフをつないでいるけれども、あくまでもエッジはノード間で張るやり方。つなぎ先はいったんノードにしておいて、属性でどのサブグラフかを指定している。 元のプログラムに戻り、ちょっとえぐいのは、サブグラフの名前。生成時に "sub01" ~ "sub03" を指定しているが、これは内部的に勝手に "cluster_sub01" のように "cluster_" が付けられてしまう。そのため、後で名前を使うときには、get_name() で取り出し直さなければならない。これが嫌な場合は、生成時には名前を指定せずに、生成したあとに set_name() で指定するとかいうことになるかな。リストから自動生成するときには、そういうやり方をするようにしないとエッジの名前と実体の対応が取れなくなってしまう。 とりあえず、下のようなものができた。サブグラフを含むようなグラフを簡単に各方法については、おいおい考える。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2007.11.17 20:48:20
コメント(0) | コメントを書く
[Python] カテゴリの最新記事
|