私はpydot経由でPythonでGraphvizを使用しています。私が作成している図には、有向グラフのクラスターが多数あります。pydot はそれらを水平に並べて配置しているため、非常に広い画像になります。代わりに垂直にスクロールできるように、最大幅の画像を出力するように指示するにはどうすればよいですか?
3 に答える
できることはいくつかあります。
'size' を使用して、グラフの最大サイズを設定できます (例: size = "4, 8" (インチ))。これにより、最終的なレイアウトのサイズが修正されます。ドット言語の他のほとんどのノード、エッジ、およびグラフ パラメーターとは異なり、'size' には既定値がありません。また、デフォルトの向きは「縦」です。これは、(より高いグラフとより広いグラフの場合) 必要なものだと思いますが、以前に「横」に設定されていた場合に備えて、このパラメーターを明示的に設定することをお勧めします。
'Size' を ' ratio ' パラメーター (レイアウトの縦横比) と共に使用して、構成を操作できます。'Ratio' は float (例: ratio = "2.0") または 'auto' または 'fill' を取ります。(後者は、「サイズ」で割り当てられたグラフ領域全体を使用して塗りつぶすようにgraphvizに指示します。
グラフの構成に最も大きな影響を与えるパラメーターは、「nodesep」と「ranksep」です。これらは、「ランク」が等しい隣接ノード間の最小水平距離と、ノードの隣接ランク間の最小垂直距離です。デフォルト値は、それぞれ 0.25 インチと 0.75 インチです。必要な構成を取得するには、同時に nodeep を増やし、ranksep を減らします。段階的な反復により、必要な構成を提供するこれら 2 つのパラメーターの一連の値にすばやく収束できるはずです。
次のようにグラフを初期化します。
graph = pydot.Dot(graph_type='digraph', rankdir='LR')
これにより、グラフの方向が左から右に設定されます。一般に、graphviz のドキュメントを使用して、目的を達成するための適切な属性を見つけてください。