OK、GraphViz でのノードの順序付けの問題がハッシュ化されて死にかけていることは知っていますが、クラスターの順序付けの問題に取り組んでいる人を見たことがありません。私は本のすべてのトリックを試しました:
ファイル内のノードの順序は左から右です。クラスターを追加しない場合、ドットは単純に正しいことを行い、プロンプトを表示せずに正しい順序でクラスターを表示します。ただし、クラスターが追加されると、ドットは順序をシャッフル (ランダム化しますか?) します。
サブクラスター間の順序を強制するために、目に見えないエッジを追加しました。しかし、サブクラスターがクラスター内に配置されるとすぐに、ドットは特定の順序を決定し、マップを保持するためにエッジをマップ全体に配置することを躊躇しないようです。
ノードの順序と見えないエッジが失敗したので、ノードの位置を強制しようとしました。dot のみがクラスターを実行し、入力位置を無視するため、これも失敗します。(生成された位置を使用して) fdp を介して dot の変更されていない出力を実行すると、クラッシュが発生したため、その方向もあきらめました。
以下の画像を生成するドット ファイルの例を次に示します。緑の線は、ドットを強制的に左から右に並べようとして失敗した「見えない」エッジです。これが成功した場合、緑色の線はアンカーからノードを通り、交差することなく、順に右に移動します。たとえば、各 be.0 はその兄弟 be.1 の左にあり、tg-s についても同様です)。ご覧のとおり、ドットはサブクラスターの順序をシャッフルしました (.1 兄弟を .0 兄弟の左側に置きます)。なんらかの制約により、エッジに関係なく、意図的にそれを行っているかのようです。それ以外のことをするように説得する方法がまったく見つかりません。生成されたダイアグラムはそれ以外は私のニーズにぴったりなので、これは非常にイライラします。
(出典: ben-kiki.org )
そう。クラスター内のクラスターの順序をドットに強制する方法はありますか?
編集:これをさらに調べると、クラスターのデフォルトの順序がノードの順序と逆になっているようです。つまり、通常 (TB グラフでは)、テキストで最初に表示されるノードは、テキストで後で表示されるノードの左側に表示される傾向があります。ただし、テキストの最初に表示されるサブクラスターは、テキストの後半に表示されるサブクラスターの右側に表示される傾向があるようです。もしこれが厳格なルールだったら、人生は素晴らしいものになるでしょう。ただし、ドットは、結果として交差するエッジに関係なく、サブクラスターを再配置することを主張する場合があります (ただし、それほど頻繁ではありません)。したがって、疑問は残ります。