ベイジアンネットワークを描画するためのソフトウェア(グラフィカルモデル)


50

見栄えの良いグラフィカルモデルを作成できる[無料]ソフトウェアを探しています。

ここに画像の説明を入力してください

任意の提案をいただければ幸いです。


1
リンクしたこのような絵を描いたり、他のソフトウェアからすぐに使えるモデルを描いたりしますか?後者の場合、どれから?

絵を描くには、私がリンクされ1好か
C.リード

2
Inkscapeで手動で作成されたので、同じことを試すことができます。

10
あなたが提供する写真は2008年にウィキペディアのために描いたもので、2012年に再描画する方法を考えていたときにこの質問を見つけました。PNGを提供しましたが、元はSVGでした。当時、私はInkscapeを使用しましたが、ひどいものでした。SVGをギリシャ語の文字に追加するには、SVGを手で編集しなければなりませんでした。誰にもお勧めしません。tikzアプローチを試してみます。
Bkkbrad

誰にもお勧めしないと言ったとき、一貫した複数のプレートダイアグラムを描画しようとする人にはInkscapeをお勧めしません。
Bkkbrad

回答:


34

現在、同様の問題(論文の複数のパス図を描く)があるため、ここにリストされている多くのオプションを調べて、同様の図を描いています。このようなベクトルグラフィックス(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を使用することには、他にも多くのメリットがあります

  • 豊富なドキュメント。PGFマニュアルには、いくつかの類似した図を作ってあなたの手を保持しています。そして、足が濡れたら...
  • 膨大な種類のグラフィックスを作成する方法を示すために、膨大な例のライブラリがあります。
  • そして最後に、Texスタック交換サイトは、Tikzに関する質問をするのに適した場所です。彼らはいくつかの小奇麗なグラフィックを作成しています(いくつかの例についてはブログをご覧ください)。

現時点では、統計パッケージRのダイアグラムを指定されたモデルから直接描画するためのライブラリの一部を検討していませんが、将来的にはそれらをより広範囲に検討する可能性があります。Rで実現できることの概念実証のために、qgraphライブラリーからいくつかの素晴らしい例があります。


1
SEMのパス図の描画に興味がある人(またはMicrosoft Office製品で何ができるかについてのいくつかのアイデア)については、パス図のJeremy Mileの pptファイルを参照することをお勧めします(参照Webページの下部にあります)。
アンディW

1
素晴らしい反応、少し学習曲線ですが、TeXと同様に、長期的には報われると思います。ありがとう!
C.リード

30

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パッケージを学ぶ必要なく、非常に受け入れられる数値を生成します。


1
このライブラリは素晴らしいです!ベイジアンネットワーク図の作成を大幅に簡素化します!共有してくれてありがとう。
fccoelho

私はこのソフトウェアとaft-pgmを試しました。これは他のソフトウェアよりもはるかに使いやすいです。優れたソフトウェアの作者に感謝します。
グッドウィル

12

http://daft-pgm.org/に勝てない

Daftは、matplotlibを使用してピクセルパーフェクトな確率的グラフィカルモデルをレンダリングし、ジャーナルまたはインターネットで公開するPythonパッケージです。短いPythonスクリプトと直感的なモデル構築構文を使用して、有向(ベイジアンネットワーク、有向非巡回グラフ)および無向(Markovランダムフィールド)モデルを設計し、matplotlibがサポートする任意の形式(PDF、PNG、EPS、SVGを含む)で保存できます)。


ダフトは素晴らしい!これは受け入れられた答えである必要があります
ドミニクアンドレアス

Daftにはいくつかの欠点があります。テキストに合わせてノードを自動スケーリングしたり、ネットワークのレイアウトを計算したりしないなどです。
fccoelho

7

GraphVizを試すことができます。

これにより、テキストファイルでグラフを指定でき、自動的に描画されます(矢印の重なりなどを回避します)。行くここに最小限の例とマニュアルのために(PDFファイル)。


5

Inkscapeは基本的にAdobe Illustratorの無料版であり、投稿した画像のように、ベクターグラフィックスを実行するための非常に強力なプログラムです。また、最終的な編集/注釈/などを行うためのほとんどの統計パッケージでかなりうまく機能します。グラフへ-R、SASなどは、グラフをPDFまたは他のベクトル形式(.epsなど)として出力できます。その後、Inkscapeに取り込み、色、シンボル、軸ラベルなどを台無しにします。


矢印を特別なオブジェクトとして扱うツールが好きです。変数を移動すると、矢印が続くことを期待しています。Inkscapeではこれができないようです。
ziyuang 14年

4

LaTeXの使用に特に興味がある場合、LaTeXDrawプログラムには、ラテックスコードが埋め込まれたフローチャートを作成するための優れた機能があります。

PSTricksコードとSVGをインポート/エクスポートし、svg、pdf、eps、jpg、pngなどもエクスポートできます。Linux、Mac OS X、およびWindowsで動作します。


3

Diaは、図を描くための無料のオープンソースプログラムです。便利だと思うし、始めるのもそれほど難しくない。


1

Diagrammixは、Mac OS Xで使用できる非常に柔軟なパッケージであることがわかりました。これは、丸みを帯びたベクトルグラフィックパッケージであり、グラフィカルモデルで優れた機能を発揮します。かなり安価で、エッジの形状と方向を改善するのに役立つ優れたアドオンがいくつかあります。


提案:質問のグラフィカルモデルを再現する方法を、Diagrammixいくつかの回答と同じように示すことができます。
Firebug



-1

Lucidchart webappを使用することもできます。

過去にグラフを描画するために使用しましたが、無料です。


-1

SCAVISにはベイジアンネットワークがあります。「scavis baysian network」をグーグルで試してみてください。同じプログラムは、Python(またはJava)構文を使用して異なる図を描画できます。


-1

draw.ioを使用し、1つまたは多数のテンプレートを使用してこれらのアイコンを作成できます。SVGやその他の形式の作成に役立ちます。システムに何かをインストールする必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.