グラフを自動的に描画するにはどうすればいいですか?

グラフを自動的に描画するにはどうすればいいですか?

抽象的なグラフを入力すると描画が返されるシンプルなパッケージはありますか?

同様の質問2010 年に質問されましたが、私の質問に関連する回答はありませんでした。複雑なコードは不要で、グラフのエッジリストを指定して描画を取得するだけです。(もちろん、いくつかのオプション パラメータは歓迎されます。) これはすでに多くのプログラミング言語で実装されているため、LaTeX でも利用できるはずです。

答え1

少なくとも 2 つの方法があります。

  1. 最も柔軟性が高い(そして私がお勧めする)のは、PGF3/TikZの自動レイアウト機能は、パッケージの最新バージョン (バージョン 3.0.0 以上) があり、luatex/ を使用しlualatexてコンパイルした場合に利用できます。PGF マニュアルを参照してください。これに関する章があります。利点は、TikZ のフルパワーを使用してノード/エッジをスタイル設定でき、ドキュメントの残りの部分とシームレスにブレンドできることです。ラベル/ノードの内容と TikZ スタイルには、(ほぼ) 任意の TeX コードを使用できます。欠点はパフォーマンスですが、ライブラリを使用することで軽減できますexternal(マニュアルを参照)。

    マニュアルからの例:

    \tikz [>=spaced stealth’]
    \graph [layered layout, components go right top aligned, nodes=draw, edges=rounded corners]
    {
        first root -> {1 -> {2, 3, 7} -> {4, 5}, 6 }, 4 -- 5;
        second root -> x -> {a -> {u,v}, b, c -> d -> {w,z} };
        third root -> child -> grandchild -> youngster -> third root;
    };
    

    例

  2. graphvizを使用してレイアウトを生成し、dot2tex利点は、メイン ドキュメントと同じフォントが引き続き使用できること、数式を使用できること、グラフを 1 回コンパイルしてドキュメントをコンパイルするたびにレイアウトを実行せずに済むことです。

    LaTeX パッケージを使用して後者を自動化する方法がありますdot2texi。これを機能させるpdflatexには、オプションを指定して実行することを忘れないようにしてください。 は、とともにインストールする必要がある外部ツール (Python に依存)を呼び出す必要があります。最近のバージョンでは、TikZ コードを生成し、ノード/エッジにカスタム TikZ スタイルを指定するオプションがあります。ドキュメントからの引用:-shell-escapedot2texidot2texgraphviz

    Graphviz と dot2tex からの出力は完璧ではありません。出版物で使用するために適切な結果を得るには、手動調整が必要な場合があります。最終的な外観の調整では、ドット ソースをハッキングするよりも、生成されたコードを編集する方が簡単な場合がよくあります。これは、tikz 出力形式を使用する場合に特に当てはまります。

関連情報