私は現在、Java でグラフ ライブラリを作成しています。いくつかのグラフを視覚化するためのツールが必要です。私は Graph-viz を発見しました。これはたまたま素晴らしい (バグはありますが) これを行う方法です。
私のモデルでは、グラフはノードとエッジで構成されています。すべてのノードには一定数のポート(I/O/IO) があり、エッジはこれらのポートをリンクします。一部の特別なノードはGraphNodesと呼ばれ、 Graphを埋め込みます。これらのGraphNodeのポートは、内部ノードの一部のポートにマップされます。
いくつかの表現を提供したいと思います。私が満足している最初のものは次のとおりです。http://i.stack.imgur.com/ujU71.png
入力ポートは緑、出力ポートは赤、入出力ポートは青で表されます。
この表現では、GraphNodesは展開されず、単純なNodesとして表示されます。2 番目のバージョンでは、次の図のようなものを作成したいと思います: http://i.stack.imgur.com/Cx624.png
問題は、固定領域を持つサブグラフ (クラスター) を作成することができないことです (それは不可能のようです)。私が試した別の解決策は、グラフをノードに埋め込むことでした。ただし、HTML ラベルの一部にコードを挿入しても<td> </td>
、コードは評価されません。
digraph graph0
{
node1
[
label =
<
<table border="0" cellspacing="0">
<tr>
<td cellpadding="0">
<table border="0" cellspacing="0">
<tr>
<td bgcolor="palegreen" border="1" port="port2">port2</td>
<td bgcolor="palegreen" border="1" port="port3">port3</td>
</tr>
</table>
</td>
</tr>
<tr>
<td cellpadding="0">
<table border="0" cellspacing="0">
<tr>
<td cellpadding="0">
<table border="0" cellspacing="0">
<tr>
<td bgcolor="skyblue" border="1" port="port5">port5</td>
</tr>
</table>
</td>
<td bgcolor="peachpuff" border="1">
subgraph clusterTest
{
nodeTest
}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td cellpadding="0">
<table border="0" cellspacing="0">
<tr>
<td bgcolor="lightpink" border="1" port="port4">port4</td>
</tr>
</table>
</td>
</tr>
</table>
>
style = "invisible"
]
}
前のコードは次のグラフを作成します: http://i.stack.imgur.com/E9jQ1.png
最後に、私が思いつく最善の解決策は次のとおりです。http://i.stack.imgur.com/VzS5g.png
ただし、GraphNodesのポートが奇妙な場所に配置されることがあるため、満足できません。
ターゲットのグラフ レイアウトに到達する方法を教えてください。必要に応じて、その他の情報をお尋ねください。
編集:まだ解決策が見つかりませんでした。これを処理する方法は、含まれているクラスター内の特定のノードの位置を修正できるようにすることですが、「ドット」レイアウトでは不可能のようです。何か案が ?