6

私は現在、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ポートが奇妙な場所に配置されることがあるため、満足できません。

ターゲットのグラフ レイアウトに到達する方法を教えてください。必要に応じて、その他の情報をお尋ねください。


編集:まだ解決策が見つかりませんでした。これを処理する方法は、含まれているクラスター内の特定のノードの位置を修正できるようにすることですが、「ドット」レイアウトでは不可能のようです。何か案が ?

4

1 に答える 1