回答:
現在、同様の問題(論文の複数のパス図を描く)があるため、ここにリストされている多くのオプションを調べて、同様の図を描いています。このようなベクトルグラフィックス(Microsoft OfficeやGoogleの図面など)を描画するためにリストされているリソースの多くは、非常に優れたパス図を、最小限の労力で作成できます。しかし、このようなプログラムに不満だった理由の一部は、各ダイアグラム間でかなり小さな変更(たとえば、別のノードの追加、ラベルの変更)だけで、多くのダイアグラムを作成する必要があったことです。ポイントアンドクリックベクターグラフィックスツールはこれに適していないため、このような小さな変更を加えるのに必要以上の労力が必要です。また、多くの図面間でテンプレートを維持することが難しくなります。そこで、このようなグラフィックスをプログラムで作成するためのオプションを検討することにしました。
ティアスによって既に言及されたように、Graphvizは、グラフィックスに必要なすべての機能(およびそれらを生成するための非常に単純なコード)に非常に近づきましたが、2つの方法でニーズを満たしていませんでした。1)数学的なフォントがありません(たとえば、Graphvizでシンボルを使用してノードにラベルを付けることができるかどうかわかりません、2)曲線を描くのが難しい(@StaskのWebサイトでGraphvizを使用したパス図の描画に関するこの投稿を参照してください) 。これらの制限のため、私は現在LatexでTikz / pgf描画ライブラリを使用することに(非常に満足しています)解決しました。以下に、グラフィックを再現する試みの例を示します(最大の問題は、ボックスの右下隅のラベルでした!)。
\documentclass[11pt]{report}
\usepackage{tikz}
\usetikzlibrary{fit,positioning}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\tikzstyle{main}=[circle, minimum size = 10mm, thick, draw =black!80, node distance = 16mm]
\tikzstyle{connect}=[-latex, thick]
\tikzstyle{box}=[rectangle, draw=black!100]
\node[main, fill = white!100] (alpha) [label=below:$\alpha$] { };
\node[main] (theta) [right=of alpha,label=below:$\theta$] { };
\node[main] (z) [right=of theta,label=below:z] {};
\node[main] (beta) [above=of z,label=below:$\beta$] { };
\node[main, fill = black!10] (w) [right=of z,label=below:w] { };
\path (alpha) edge [connect] (theta)
(theta) edge [connect] (z)
(z) edge [connect] (w)
(beta) edge [connect] (w);
\node[rectangle, inner sep=0mm, fit= (z) (w),label=below right:N, xshift=13mm] {};
\node[rectangle, inner sep=4.4mm,draw=black!100, fit= (z) (w)] {};
\node[rectangle, inner sep=4.6mm, fit= (z) (w),label=below right:M, xshift=12.5mm] {};
\node[rectangle, inner sep=9mm, draw=black!100, fit = (theta) (z) (w)] {};
\end{tikzpicture}
\end{figure}
\end{document}
%note - compiled with pdflatex
今、私はすでにLatexで論文を書いているので、Latexドキュメント全体をコンパイルすることなく画像が必要な場合は少し不便ですが、画像をより直接生成するためのかなり小さな回避策があります(この質問を参照してくださいstackoverflowで)。このようなプロジェクトにTikzを使用することには、他にも多くのメリットがあります
現時点では、統計パッケージRのダイアグラムを指定されたモデルから直接描画するためのライブラリの一部を検討していませんが、将来的にはそれらをより広範囲に検討する可能性があります。Rで実現できることの概念実証のために、qgraphライブラリーからいくつかの素晴らしい例があります。
Laura Dietzは、tikz用の非常に優れたライブラリを作成しました。これにより、実際にtikzを直接使用する必要なく、ラテックスでベイジアンネットワークを描画できます。
このパッケージのデモを行うには、この質問の次の例を参照してください。
\documentclass[11pt]{report}
\usepackage{tikz}
\usetikzlibrary{bayesnet}
\begin{document}
\begin{figure}
\centering
\tikz{ %
\node[latent] (alpha) {$\alpha$} ; %
\node[latent, right=of alpha] (theta) {$\theta$} ; %
\node[latent, right=of theta] (z) {z} ; %
\node[latent, above=of z] (beta) {$\beta$} ; %
\node[obs, right=of z] (w) {w} ; %
\plate[inner sep=0.25cm, xshift=-0.12cm, yshift=0.12cm] {plate1} {(z) (w)} {N}; %
\plate[inner sep=0.25cm, xshift=-0.12cm, yshift=0.12cm] {plate2} {(theta) (plate1)} {M}; %
\edge {alpha} {theta} ; %
\edge {theta} {z} ; %
\edge {z,beta} {w} ; %
}
\end{figure}
\end{document}
%note - compiled with pdflatex
正確に同じではありませんが、確かに同じ情報を伝え、特定の要件により合うように調整することができます。このパッケージは、完全なtikzパッケージを学ぶ必要なく、非常に受け入れられる数値を生成します。
Daftは、matplotlibを使用してピクセルパーフェクトな確率的グラフィカルモデルをレンダリングし、ジャーナルまたはインターネットで公開するPythonパッケージです。短いPythonスクリプトと直感的なモデル構築構文を使用して、有向(ベイジアンネットワーク、有向非巡回グラフ)および無向(Markovランダムフィールド)モデルを設計し、matplotlibがサポートする任意の形式(PDF、PNG、EPS、SVGを含む)で保存できます)。
Inkscapeは基本的にAdobe Illustratorの無料版であり、投稿した画像のように、ベクターグラフィックスを実行するための非常に強力なプログラムです。また、最終的な編集/注釈/などを行うためのほとんどの統計パッケージでかなりうまく機能します。グラフへ-R、SASなどは、グラフをPDFまたは他のベクトル形式(.epsなど)として出力できます。その後、Inkscapeに取り込み、色、シンボル、軸ラベルなどを台無しにします。
LaTeXの使用に特に興味がある場合、LaTeXDrawプログラムには、ラテックスコードが埋め込まれたフローチャートを作成するための優れた機能があります。
PSTricksコードとSVGをインポート/エクスポートし、svg、pdf、eps、jpg、pngなどもエクスポートできます。Linux、Mac OS X、およびWindowsで動作します。
Diagrammixは、Mac OS Xで使用できる非常に柔軟なパッケージであることがわかりました。これは、丸みを帯びたベクトルグラフィックパッケージであり、グラフィカルモデルで優れた機能を発揮します。かなり安価で、エッジの形状と方向を改善するのに役立つ優れたアドオンがいくつかあります。
Diagrammix
いくつかの回答と同じように示すことができます。
Google Docs Drawを試すことができます。それはあなたのブラウザであなたが望むものを無料で行うように見えます。
PlantUMLにアクセスできます。オープンソースで非常に柔軟です。
Lucidchart webappを使用することもできます。
過去にグラフを描画するために使用しましたが、無料です。