Software zum Zeichnen von Bayes'schen Netzwerken (grafische Modelle)

50

Ich bin auf der Suche nach [freier] Software, mit der sich gut aussehende grafische Modelle erstellen lassen, z

Bildbeschreibung hier eingeben

Anregungen wäre dankbar.

C. Reed
quelle
1
Du meinst, du zeichnest Bilder wie diese, die du verlinkt hast, oder zeichnest fertige Modelle aus einer anderen Software? Wenn letzteres, von welchem?
Das Zeichnen von Bildern gefiel mir
C. Reed
2
Es wurde manuell in Inkscape erstellt , sodass Sie das Gleiche versuchen können.
10
Das ist großartig - das Bild, das Sie zur Verfügung stellen, habe ich 2008 für Wikipedia gezeichnet, und ich fand diese Frage, als ich herausfand, wie man es 2012 neu zeichnet. Sie stellen eine PNG-Datei bereit, aber es war ursprünglich eine SVG-Datei . Damals habe ich Inkscape verwendet und es war schrecklich - ich musste die SVG-Datei von Hand bearbeiten, um sie in die griechischen Buchstaben einzufügen, weil sie damals nicht funktionieren konnte (vielleicht kann sie es immer noch nicht). Ich kann es niemandem empfehlen. Ich werde dem Tikz eine Chance geben.
Bkkbrad,
Als ich sagte, ich würde es niemandem empfehlen, meinte ich, ich würde Inkscape niemandem empfehlen, der versucht, mehrere konsistente Plattendiagramme zu zeichnen.
Bkkbrad,

Antworten:

34

Derzeit habe ich ein ähnliches Problem (Zeichnen mehrerer Pfaddiagramme für meine Dissertation). Daher habe ich viele der hier aufgeführten Optionen bereits untersucht, um ähnliche Diagramme zu zeichnen. Viele der aufgeführten Ressourcen zum Zeichnen solcher Vektorgrafiken (z. B. in Microsoft Office- oder Google-Zeichnungen) können mit relativ geringem Aufwand sehr schöne Wegdiagramme erstellen. Ein Grund, warum ich mit solchen Programmen nicht zufrieden war, war, dass ich viele Diagramme mit nur geringfügigen Änderungen zwischen den einzelnen Diagrammen erstellen musste (z. B. Hinzufügen eines weiteren Knotens, Ändern einer Bezeichnung). Die Point-and-Click-Vektorgrafiken sind dafür nicht geeignet und erfordern mehr Aufwand als nötig, um solche geringfügigen Änderungen vorzunehmen. Es wird auch schwierig, eine Schablone zwischen vielen Zeichnungen beizubehalten. Daher habe ich mich entschlossen, Optionen zu prüfen, um solche Grafiken programmatisch zu erstellen.

Wie bereits von Thias erwähnt, hatte Graphviz beinahe alle Schnickschnack, die ich mir für meine Grafiken gewünscht hatte (und auch ganz einfachen Code, um sie zu erstellen), aber meine Bedürfnisse erfüllten sich in zweierlei Hinsicht nicht. 1) Es fehlen mathematische Schriftarten (z. B. bin ich mir nicht sicher, ob Sie einen Knoten mit dem Symbol in Graphviz kennzeichnen können. 2) Kurvige Linien sind schwer zu zeichnen (siehe diesen Beitrag zum Zeichnen von Pfaddiagrammen mit Graphviz auf der @ Stask-Website). . Aufgrund dieser Einschränkungen habe ich mich derzeit (sehr glücklich) für die Verwendung der Tikz / pgf- Zeichnungsbibliothek in Latex entschieden. Ein Beispiel ist unten von meinem Versuch, Ihre Grafik zu reproduzieren (der größte Schmerz waren die Beschriftungen in den unteren rechten Ecken der Kästen!);β

Bildbeschreibung hier eingeben

\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

Nun, ich bin schon meine Dissertation in Latex zu schreiben, also , wenn Sie nur das Bild wollen , ohne ein ganzes Latex - Dokument zu erstellen, die es leicht inconveniant ist, aber es gibt einige ziemlich kleineren Abhilfen ein Bild mehr direkt (siehe produzieren diese Frage über auf Stapelüberlauf). Es gibt jedoch eine Reihe weiterer Vorteile, wenn Tikz für ein solches Projekt verwendet wird

  • Umfangreiche Dokumentation. Das pgf-Handbuch führt Sie durch die Erstellung einiger ähnlicher Diagramme. Und sobald Sie Ihre Füße nass bekommen ...
  • Eine riesige Bibliothek mit Beispielen zeigt, wie man eine Vielzahl von Grafiken erstellt.
  • Und schließlich ist die Tex Stack Exchange Site ein guter Ort, um Fragen zu Tikz zu stellen. Sie haben ein paar Wizzes da drüben, die hübsche, schicke Grafiken machen (Beispiele finden Sie in ihrem Blog ).

Zu diesem Zeitpunkt habe ich einige Bibliotheken zum Zeichnen der Diagramme im Statistikpaket R nicht direkt aus den angegebenen Modellen in Betracht gezogen, aber ich werde sie in Zukunft möglicherweise in größerem Umfang berücksichtigen. Es gibt einige schöne Beispiele aus der qgraph-Bibliothek für einen Proof of Concept, der zeigt, was in R erreicht werden kann.

Andy W
quelle
1
Für diejenigen, die sich für das Zeichnen von Pfaddiagrammen für SEM interessieren (oder für einige weitere Ideen, was in Microsoft Office-Produkten erreicht werden kann), empfehle ich Ihnen, die ppt-Datei mit Pfaddiagrammen von Jeremy Mile (unten auf der Webseite, auf die verwiesen wird) zu lesen.
Andy W
1
Tolle Resonanz, es ist ein bisschen eine Lernkurve, aber wie bei allem, was mit TeX zu tun hat, wird es sich auf lange Sicht auszahlen. Vielen Dank!
C. Reed
30

Laura Dietz hat eine sehr schöne Bibliothek für Tikz geschrieben, die das Zeichnen von Bayesian Networks in Latex ermöglicht, ohne Tikz direkt verwenden zu müssen.

Im folgenden Beispiel wird dieses Paket anhand dieser Frage veranschaulicht:

\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

Bildbeschreibung hier eingeben

Es ist zwar nicht genau das Gleiche, vermittelt jedoch mit Sicherheit die gleichen Informationen und kann an die jeweiligen Anforderungen angepasst werden. Dieses Paket generiert sehr akzeptable Zahlen, ohne dass Sie das vollständige tikz-Paket lernen müssen.

zelanix
quelle
1
Diese Bibliothek ist großartig! Vereinfacht die Erstellung von Bayes'schen Netzwerkdiagrammen erheblich! Danke für das Teilen.
Fccoelho
Ich habe diese Software und Aft-PGM ausprobiert, diese ist viel einfacher zu bedienen als die andere. Vielen Dank an den Autor für die hervorragende Software.
Good Will
12

Sie können http://daft-pgm.org/ nicht schlagen

Daft ist ein Python-Paket, das matplotlib verwendet, um pixelgenaue probabilistische grafische Modelle für die Veröffentlichung in einer Zeitschrift oder im Internet zu rendern . Mit einem kurzen Python-Skript und einer intuitiven Modellierungssyntax können Sie gerichtete (Bayes'sche Netzwerke, gerichtete azyklische Diagramme) und ungerichtete (Markov-Zufallsfelder) Modelle entwerfen und in allen von Matplotlib unterstützten Formaten (einschließlich PDF, PNG, EPS und SVG) speichern ).

Emre
quelle
Dummkopf ist der Hammer! dies sollte die akzeptierte antwort sein imho
dominik andreas
Daft hat ein paar Nachteile: Es skaliert die Knoten nicht automatisch, um sie an den Text anzupassen, berechnet nicht das Layout des Netzwerks usw. Das war genug, um mich auszuschalten.
Fccoelho
7

Sie könnten GraphViz ausprobieren .

Auf diese Weise können Sie das Diagramm in einer Textdatei angeben und es wird automatisch gezeichnet (Vermeidung überlappender Pfeile usw.). Gehen Sie hier (pdf) für ein minimales Beispiel und ein Handbuch.

thias
quelle
5

Inkscape ist im Wesentlichen eine kostenlose Version von Adobe Illustrator und ein sehr starkes Programm zum Erstellen von Vektorgrafiken, wie das von Ihnen veröffentlichte Bild. Es funktioniert auch recht gut mit den meisten Statistikpaketen für endgültige Bearbeitungen / Anmerkungen / etc. in Grafiken - R, SAS usw. können eine Grafik als PDF-Datei oder in einem anderen Vektorformat (z. B. .eps) ausgeben. Anschließend können Sie sie in Inkscape importieren, um mit Farben, Symbolen, Achsenbeschriftungen usw. herumzuspielen.

Fomite
quelle
Ich bevorzuge die Werkzeuge, die Pfeile als spezielle Objekte behandeln: Wenn ich die Variablen bewege, hoffe ich, dass die Pfeile folgen. Inkscape kann das anscheinend nicht.
Ziyuang
4

Wenn Sie ein besonderes Interesse an der Verwendung von LaTeX haben, bietet das Programm LaTeXDraw einige nützliche Funktionen zum Erstellen von Flussdiagrammen mit eingebettetem Latexcode .

Es importiert / exportiert PSTricks-Code und SVG und kann auch svg, pdf, eps, jpg, png usw. exportieren. Es läuft unter Linux, Mac OS X und Windows.

David LeBauer
quelle
3

Dia ist ein kostenloses Open-Source-Programm zum Zeichnen von Diagrammen. Ich finde es nützlich und es ist nicht zu schwierig, anzufangen.

Tal
quelle
1

Ich habe festgestellt, dass Diagrammix ein sehr flexibles Paket ist, das für Mac OS X verfügbar ist. Es ist ein abgerundetes Vektorgrafikpaket und leistet gute Arbeit bei grafischen Modellen. Es ist ziemlich billig und hat einige gute Zusätze, die dazu beigetragen haben, die Formen und Richtungen der Kanten zu verbessern.

Firebug
quelle
Ein Vorschlag: Sie könnten zeigen, wie Sie das grafische Modell in der Frage mit den Diagrammixgleichen Antworten reproduzieren können .
Firebug
-1

Sie können Google Docs Draw ausprobieren . Es sieht so aus, als würde es kostenlos tun, was Sie wollen, direkt in Ihrem Browser.

Ringold
quelle
Ich habe es versucht, aber (meiner Meinung nach) es fehlt Inkscape Flexibilität.
Suncoolsu
-1

Sie können sich für PlantUML entscheiden . Es ist Open Source und sehr flexibel.

RockScience
quelle
-1

Sie können auch die Lucidchart- Webapp verwenden.

Ich habe es in der Vergangenheit zum Zeichnen von Grafiken verwendet und es ist kostenlos.

Paolo
quelle
-1

SCAVIS hat ein Bayesianisches Netzwerk. Versuchen Sie, "Scavis BaySian Network" zu googeln. Das gleiche Programm kann verschiedene Diagramme mit Python- (oder Java-) Syntax zeichnen.

Jim12
quelle
-1

Sie können draw.io verwenden und eine oder mehrere Vorlagen verwenden, um diese Symbole zu erstellen. Es hilft Ihnen beim Erstellen von SVGs oder anderen Formaten. und erfordert keine Installation auf Ihrem System.

Amir
quelle