21

途中です編集をご覧ください

OK、これが私の問題です。関数/メソッド/クラスを含むすべてのファイルを含む、Pythonモジュールのグラフを生成しています。

ノードが親ノードの周りに円を描くように配置したいと思います。現在、すべてが1つの巨大な水平方向の行にあり、幅が5万ピクセルを超え、svgコンバーターが失敗します(グラフの約半分のみがレンダリングされます)。 )。

ドキュメントを調べましたが、うまくいくと思われるものは見つかりませんでした。

したがって、問題は次のとおり
です。これを行う簡単な方法はありますか、それともすべてを自分でレイアウトする必要がありますか?:/

編集:
アンドリュースのコメントのおかげで私は正しいレイアウトを手に入れました、今の唯一の問題はそれが少し「コンパクト」であるということです...それで今の問題はこれをどのように修正するかです?

テスト

4

3 に答える 3

35

現在のレイアウトに影響を与える最も重要なパラメーターをすべて挙げてから、それらのパラメーターの推奨値について説明しました。それでも、これらの提案をいくつか適用するだけで、必要なレイアウトを取得できると思います。

  • エッジの重みを減らします。たとえば、[weight=0.5]。これにより、エッジが長くなり、グラフに現在表示されているタイトなクラスターが「ファンアウト」します。

  • ノードの境界線を取り除く、node_A [color = none; shape = plaintext]; 特に楕円形のノードの場合、ノードスペース全体のかなりの部分が「未使用」です(つまり、ノードラベルの表示には使用されません)。

  • ノードのフォントサイズを明示的に設定します(ノードの境界線はノードテキストを囲むように拡大されます。つまり、特定のノードのフォントサイズとテキストの量がそのサイズに大きく影響します)。[fontsize = 11]は、読みやすく、しかも「雑然とした」外観を減らすのに十分な大きさである必要があります(デフォルトのサイズは14です)。

  • 'nodesep'を介して、ノード間の最小間隔を増やします。例:nodesep = 2.0; これにより、グラフが「コンパクトすぎる」という反対意見に直接対処できます。('nodesep'と'ranksep'は、おそらくドットがノード、エッジ、またはグラフの他のどのパラメーターよりもグラフを描画する方法に影響します。あなたの場合、ノードのランクは2つしかないように見えます。'ranksep'は最小距離を設定します。異なるランクのノード間 -グラフを構成するすべてのノードが同じランクであるように見えます(中央のいくつかのトップレベルノードを除く)。

  • グラフの合計サイズを明示的に設定します。たとえば、size = "7.75,10.25"(グラフが8.5 x 11ページに収まり、スペース全体を占めるようにします)

  • そして、せいぜいグラフがすっきりと見えるのを助けるだけであるという純粋に審美的な提案の1つです。つまり、エッジとノードの両方のデフォルトのフォントカラーは黒です。グラフのインクの大部分はこれらの2つの構造からのものであるため(特にノードの境界線を削除した場合)、たとえば、ノード(テキスト)のフォントカラーまたはエッジのフォントカラーを「青」に設定して、目で区別できるようにします。 2セットのグラフ構造。

于 2010-04-16T04:47:02.167 に答える
6

コンパクトすぎる場合は、エッジの長さをいじりたくなるでしょう。グラフのレイアウトに応じて、いくつかのオプションがあります。

  1. レイアウトが sfdp または fdp の場合、グラフプロパティKを微調整します。デフォルトは 0.3 です。
  2. neato (または fdp) の場合は、エッジプロパティlenを微調整します。デフォルトは、neato では 1.0、fdp では 0.3 です。
  3. ドットの場合、最小エッジ長であるエッジプロパティminlenを使用できます。デフォルトは 1 です。

クラスタリングの動作を決定するグラフ プロパティモデルを変更することもできます。具体的には、subsetを試してください。これでlenが処理されると思います: http://www.graphviz.org/doc/info/attrs.html#d:model

また、スケーリング手法を使用してオーバーラップをすべて削除することもできます: http://www.graphviz.org/doc/info/attrs.html#d:overlap

于 2010-05-24T17:05:12.447 に答える