Oprogramowanie do rysowania sieci bayesowskich (modele graficzne)


50

Szukam [darmowego] oprogramowania, które może produkować ładnie wyglądające modele graficzne, np

wprowadź opis zdjęcia tutaj

Wszelkie sugestie będą mile widziane.


1
Masz na myśli rysowanie zdjęć, które połączyłeś, lub rysowanie gotowych modeli z innego oprogramowania? Jeśli to drugie, z jakiego?

Rysowanie zdjęć podobało się temu, które połączyłem
C. Reed

2
Został on utworzony ręcznie w Inkscape , więc możesz spróbować zrobić to samo.

10
To niesamowite - zdjęcie, które podajesz, narysowałem dla Wikipedii w 2008 roku. Znalazłem to pytanie, gdy zastanawiałem się, jak go narysować w 2012 roku. Dostarczasz plik PNG, ale pierwotnie był to plik SVG . Wtedy użyłem Inkscape i było to okropne - musiałem ręcznie edytować plik SVG, aby dodać greckie litery, ponieważ wtedy nie mógł sobie z tym poradzić (być może nadal nie może). Nie polecam tego nikomu. Spróbuję podejść do Tikza.
Bkkbrad

Kiedy powiedziałem, że nie polecam go nikomu, miałem na myśli, że nie polecam Inkscape każdemu, kto próbuje narysować wiele spójnych schematów płyt.
Bkkbrad

Odpowiedzi:


34

Mam obecnie podobny problem (rysowanie wielu diagramów ścieżek do mojej pracy doktorskiej), więc analizowałem wiele z wymienionych tutaj opcji, aby narysować podobne diagramy. Wiele z wymienionych zasobów do rysowania takich grafik wektorowych (takich jak rysunki Microsoft Office lub Google) może tworzyć naprawdę ładne diagramy ścieżek, przy minimalnym wysiłku. Ale jednym z powodów, dla których nie byłem zadowolony z takich programów, jest to, że musiałem stworzyć wiele diagramów, z jedynie niewielkimi zmianami między poszczególnymi diagramami (np. Dodać kolejny węzeł, zmienić etykietę). Narzędzia grafiki wektorowej typu „wskaż i kliknij” nie nadają się do tego dobrze i dokonanie tak drobnych zmian wymaga więcej wysiłku. Trudno jest również utrzymać szablon między wieloma rysunkami. Postanowiłem więc przeanalizować opcje programowego tworzenia takiej grafiki.

Graphviz, jak już wspomniano przez Thias, był naprawdę bliski posiadania wszystkich dzwonków i gwizdków, które chciałem dla mojej grafiki (a także dość prostego kodu do ich produkcji), ale moje potrzeby były dwojakie na dwa sposoby; 1) brakuje czcionek matematycznych (np. Nie jestem pewien, czy możesz oznaczyć węzeł symbolem w Graphviz, 2) trudno jest narysować zakrzywione linie (zobacz ten post na temat rysowania diagramów ścieżek za pomocą Graphviz na stronie internetowej @ Stask) . Z powodu tych ograniczeń postanowiłem (bardzo szczęśliwie) korzystać z biblioteki rysunków Tikz / pgf w Latex. Poniżej znajduje się przykład mojej próby odtworzenia grafiki (największy ból sprawiły etykiety w prawym dolnym rogu pola!);β

wprowadź opis zdjęcia tutaj

\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

Teraz już piszę moją pracę doktorską w języku lateksowym, więc jeśli chcesz tylko obraz bez konieczności kompilowania całego dokumentu lateksowego, jest to nieco niewygodne, ale istnieją pewne dość niewielkie obejścia, aby uzyskać obraz bardziej bezpośrednio (zobacz to pytanie powyżej przy przepełnieniu stosu). Istnieje jednak wiele innych korzyści z używania Tikz do takiego projektu

  • Obszerna dokumentacja. Podręcznik pgf trzyma rękę przy tworzeniu podobnych schematów. A kiedy zmoczysz stopy ...
  • Istnieje ogromna biblioteka przykładów, aby zademonstrować, jak tworzyć różnorodne grafiki.
  • I wreszcie strona wymiany stosów Tex jest dobrym miejscem do zadawania pytań na temat Tikz. Mają tam kilku czarodziejów tworzących dość fantazyjną grafikę (sprawdź ich blog na kilku przykładach).

W tej chwili nie rozważałem niektórych bibliotek do rysowania diagramów w pakiecie statystycznym R bezpośrednio z określonych modeli, ale w przyszłości mogę rozważyć je w większym stopniu. Istnieje kilka ciekawych przykładów z biblioteki qgraph potwierdzających koncepcję tego, co można osiągnąć w R.


1
Osobom zainteresowanym rysowaniem diagramów ścieżek dla SEM (lub innymi pomysłami na temat tego, co można osiągnąć w produktach Microsoft Office), sugeruję przejrzenie pliku ppt diagramów ścieżek Jeremy'ego Mile'a (na dole strony, do której się odwołuje).
Andy W

1
Świetna odpowiedź, to trochę krzywa uczenia się, ale jak wszystko w TeXie, myślę, że na dłuższą metę się opłaci. Dzięki!
C. Reed

30

Laura Dietz napisała bardzo dobrą bibliotekę dla tikz, która umożliwia rysowanie Bayesian Networks w lateksie bez konieczności bezpośredniego używania tikz.

Aby zademonstrować ten pakiet, zobacz następujący przykład tego pytania:

\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

wprowadź opis zdjęcia tutaj

Chociaż nie jest dokładnie taki sam, z pewnością przekazuje te same informacje i można go dostosować, aby lepiej pasował do konkretnych wymagań. Ten pakiet generuje bardzo akceptowalne liczby bez konieczności uczenia się pełnego pakietu tikz.


1
Ta biblioteka jest niesamowita! Znacznie upraszcza tworzenie diagramów sieci bayesowskiej! Dzięki za udostępnienie.
fccoelho,

Wypróbowałem to oprogramowanie i aft-pgm, ten jest o wiele łatwiejszy w użyciu niż drugi. Dzięki autorowi za doskonałe oprogramowanie.
Good Will

12

Nie możesz pokonać http://daft-pgm.org/

Daft to pakiet Pythona, który wykorzystuje matplotlib do renderowania perfekcyjnie pikselowych probabilistycznych modeli graficznych do publikacji w czasopiśmie lub w Internecie. Za pomocą krótkiego skryptu Python i intuicyjnej składni modeli można projektować modele ukierunkowane (sieci Bayesa, ukierunkowane wykresy acykliczne) i modele bezkierunkowe (pola losowe Markowa) i zapisywać je w dowolnych formatach obsługiwanych przez matplotlib (w tym PDF, PNG, EPS i SVG ).


głupek jest niesamowity! powinna to być przyjęta odpowiedź imho
dominik andreas

Daft ma kilka wad: nie skaluje automatycznie węzłów w celu dopasowania do tekstu, nie oblicza układu sieci itp. To wystarczyło, aby mnie wyłączyć.
fccoelho,

7

Możesz spróbować GraphViz .

Pozwala to określić wykres w pliku tekstowym i zostanie on narysowany automatycznie (unikając nakładających się strzałek itp.). Przejdź tutaj (pdf), aby zobaczyć minimalny przykład i instrukcję.


5

Inkscape jest zasadniczo bezpłatną wersją programu Adobe Illustrator i jest bardzo silnym programem do tworzenia grafiki wektorowej, takim jak opublikowane zdjęcie. Gra również całkiem ładnie z większością pakietów statystycznych do końcowych edycji / adnotacji / itp. do wykresów - R, SAS itp. mogą generować wykres w formacie PDF lub innym formacie wektorowym (np. .eps), a następnie można go wprowadzić do Inkscape, aby pomieszać kolory, symbole, etykiety osi itp.


Wolę narzędzia, które traktują strzałki jako obiekty specjalne: kiedy przesuwam zmienne, mam nadzieję, że strzały nadążą. Wygląda na to, że Inkscape nie może tego zrobić.
ziyuang

4

Jeśli jesteś szczególnie zainteresowany korzystaniem z LaTeX, program LaTeXDraw ma niezłą funkcjonalność do tworzenia schematów blokowych z osadzonym kodem lateksowym.

Importuje / eksportuje kod PSTricks i SVG, a także może eksportować svg, pdf, eps, jpg, png itp. Działa w systemach Linux, Mac OS X i Windows.


3

Dia to darmowy program typu open source do rysowania diagramów. Uważam, że jest to przydatne i nie jest zbyt trudno rozpocząć.


1

Przekonałem się, że Diagrammix jest bardzo elastycznym pakietem dostępnym dla Mac OS X. Jest to dobrze zaokrąglony pakiet grafiki wektorowej i dobrze sobie radzi z modelami graficznymi. Jest dość niedrogi i ma kilka dobrych dodatków, które pomogły poprawić kształty i kierunki krawędzi.


Sugestia: możesz pokazać, jak odtworzyć model graficzny w pytaniu, Diagrammixpodobnie jak niektóre odpowiedzi.
Firebug



-1

Możesz także użyć aplikacji internetowej Lucidchart .

Użyłem go w przeszłości do rysowania wykresów i jest bezpłatny.


-1

SCAVIS ma sieć bayesowską. Spróbuj google „scavis baysian network”. Ten sam program może rysować różne diagramy przy użyciu składni Python (lub Java).


-1

możesz użyć draw.io i użyć jednego lub wielu szablonów, aby utworzyć te ikony. Pomaga tworzyć pliki SVG lub dowolny inny format. i nie wymaga instalowania czegokolwiek w systemie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.