Bayes ağları çizmek için yazılımlar (grafik modeller)


50

Örneğin, güzel görünümlü grafik modeller üretebilen [özgür] yazılımlar arıyorum.

görüntü tanımını buraya girin

Herhangi bir öneriniz memnuniyetle karşılanacaktır.


1
Bağladığın resimlerin çizilmesi veya başka bir yazılımdan hazır modeller çizilmesi mi demek istiyorsun? İkincisi, hangisinden?

Resimler çizdiğim bağlantıyı beğendiğim
C. Reed

2
Inkscape'de manuel olarak oluşturuldu , böylece aynısını yapmayı deneyebilirsiniz.

10
Bu harika - sağladığınız resim 2008'de Wikipedia için çektiğim bir resim ve bu soruyu 2012'de nasıl yeniden çizeceğimi bulduğumda buldum. Bir PNG sağlıyorsunuz, ama aslında bir SVG idi . O zamanlar Inkscape'i kullandım ve çok kötüydü - Yunan harflerini eklemek için SVG'yi elle düzenlemek zorunda kaldım, çünkü o zamanlar bunu kaldıramadı (belki de hala yapamıyordu). Kimseye tavsiye etmiyorum. Tikz yaklaşımına bir şans vereceğim.
Bkkbrad

Kimseye tavsiye etmediğimi söylediğimde, birden fazla tutarlı plaka şeması çizmeye çalışanlara Inkscape'i tavsiye etmiyorum demek istedim.
Bkkbrad

Yanıtlar:


34

Şu anda benzer bir problemim var (tezim için çoklu yol diyagramları çiziyorum) ve bu yüzden benzer diyagramları çizmek için burada listelenen seçeneklerin çoğunu inceliyordum. Bu tür vektör grafiklerini çizmek için listelenen kaynakların birçoğu (örneğin, microsoft office veya google çizimleri gibi) oldukça az çaba harcayarak gerçekten güzel yol şemaları üretebilir. Ancak, bu tür programlardan memnun olmama sebebimin bir kısmı, her diyagram arasında sadece oldukça küçük değişikliklerle birçok diyagram üretmem gerektiğiydi (örneğin, başka bir düğüm ekleyin, bir etiketi değiştirin). İşaretle ve tıkla vektör grafik araçları bunun için uygun değildir ve bu tür küçük değişiklikler yapmak için gerekenden daha fazla çaba sarf edin. Ayrıca, birçok çizim arasında bir şablonu korumak zorlaşır. Bu yüzden, bu tür grafikleri programatik olarak üretme seçeneklerini incelemeye karar verdim.

β

görüntü tanımını buraya girin

\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

Şimdi, ben zaten Lateks tezimi kadar yazıyorum, bu nedenle sadece biraz inconveniant olan bir bütün Lateks belgesini derlemek zorunda kalmadan görüntü istiyorum ama daha doğrudan bir görüntü üretmek için bazı oldukça küçük geçici çözümler olup olmadığını (bkz bu soruyu üzerinde yığın akışı üzerinde). Böyle bir proje için Tikz kullanmanın bir çok yararı var.

  • Geniş dokümantasyon PGF kılavuzu bazı benzer diyagramlar yapma boyunca elini tutar. Ve bir kere ayaklarını ıslattığında ...
  • Çok çeşitli grafiklerin nasıl üretileceğini göstermek için çok çeşitli örnekler kütüphanesi var.
  • Ve nihayet, Tex yığın değişim sitesi Tikz hakkında herhangi bir soru sormak için iyi bir yerdir. Onlar orada bazı güzel fantezi grafik yapım bazı wizzes var ( bazı örnekler için kendi bloguna göz atın ).

Şimdilik R istatistiki paketindeki diyagramları doğrudan belirtilen modellerden çizmek için bazı kütüphaneleri göz önünde bulundurmadım, ancak gelecekte bunları daha fazla düşünebilirim. Qgraph kütüphanesinde , R.’de neyin başarılabileceğine dair bir kavram kanıtı için bazı güzel örnekler var.


1
SEM için yol şemaları çizmekle ilgilenenler için (veya Microsoft Office ürünlerinde neler yapılabileceği hakkında daha fazla fikir için), Jeremy Mile'nin yol şemaları ppt dosyasını (başvurulan web sayfasının en altında) kontrol etmenizi öneririm .
Andy W

1
Müthiş tepki, biraz öğrenme eğrisi, ancak herhangi bir TeX gibi, uzun vadede karşılığını alacağını düşünüyorum. Teşekkürler!
C. Reed

30

Laura Dietz , tikz için, doğrudan tikz kullanmaya gerek kalmadan, lateks içerisinde Bayesian Networks'ün çizilmesini sağlayan çok güzel bir kütüphane yazdı.

Bu paketi göstermek için, bu soru için aşağıdaki örneğe bakın:

\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

görüntü tanımını buraya girin

Tam olarak aynı olmasa da, kesinlikle aynı bilgileri iletir ve belirli gereksinimlere daha iyi uyması için ince ayar yapılabilir. Bu paket tam tikz paketini öğrenmeye gerek kalmadan çok kabul edilebilir rakamlar üretir.


1
Bu kütüphane harika! Bayesian ağ şemalarının oluşturulmasını büyük ölçüde kolaylaştırır! Paylaşım için teşekkürler.
fccoelho

Bu yazılımı ve aft-pgm'yi denedim, bu kullanmak diğerinden çok daha kolay. Mükemmel yazılım için yazara teşekkür ederiz.
İyi

12

Http://daft-pgm.org/ yenemezsin

Daft, matplotlib'i bir dergide veya internette yayınlamak için piksel-mükemmel olasılıklı grafiksel modeller oluşturmak için kullanan bir Python paketidir . Kısa bir Python betiği ve sezgisel bir model oluşturma sözdizimi ile yönlendirilmiş (Bayesian Networks, yönlendirilmiş asiklik grafikler) ve yönlendirilmemiş (Markov rastgele alanları) modelleri tasarlayabilir ve bunları matplotlib'in desteklediği herhangi bir biçimde (PDF, PNG, EPS ve SVG dahil) kaydedebilirsiniz. ).


daft harika! bu kabul edilen cevap olmalıdır imho
dominik andreas

Daft'ın birkaç dezavantajı var: Düğümleri metne sığdırmak için otomatik ölçeklendirme yapmıyor, ağın düzenini vb. Hesaplamıyor.
fccoelho

7

GraphViz'i deneyebilirsiniz .

Bu, grafiği bir metin dosyasında belirtmenize izin verir ve otomatik olarak çizilir (çakışan oklardan vb. Kaçınılarak). Minimal bir örnek ve bir el kitabı için buraya (pdf) gidin .


5

Inkscape aslında Adobe Illustrator uygulamasının ücretsiz bir sürümüdür ve gönderdiğiniz resim gibi vektör grafikleri yapmak için çok güçlü bir programdır. Ayrıca son düzenlemeleri / açıklamaları / vb. Yapmak için çoğu istatistiksel paketle birlikte oldukça iyi bir şekilde oynuyor. Grafiklere - R, SAS, vb. bir grafiği PDF veya başka bir vektör formatı (.eps gibi) olarak çıkarabilir ve ardından renkleri, sembolleri, eksen etiketlerini vb. karıştırmak için Inkscape'e getirebilirsiniz.


Okları özel nesneler olarak gören araçları tercih ederim: değişkenleri hareket ettirdiğimde okların takip edeceğini umuyorum. Görünüşe göre Inkscape bunu yapamaz.
ziyuang

4

LaTeX'i kullanmakla özellikle ilgileniyorsanız, LaTeXDraw programının gömülü lateks kodlu akış çizelgeleri oluşturmak için hoş bir işlevi vardır.

PSTricks kodunu ve SVG'yi içe / dışa aktarabilir ve svg, pdf, eps, jpg, png vb. Dosyaları da dışa aktarabilir. Linux, Mac OS X ve Windows işletim sistemlerinde çalışır.


3

Dia , çizimleri çizmek için ücretsiz bir açık kaynaklı programdır. Kullanışlı buluyorum ve başlamak zor değil.


1

Diagrammix'in Mac OS X için kullanılabilen çok esnek bir paket olduğunu buldum . İyi yuvarlanmış bir vektör grafik paketi ve grafik modellerde iyi bir iş çıkarıyor. Oldukça ucuzdur ve kenarların şeklini ve yönünü iyileştirmeye yardımcı olan bazı iyi eklentilere sahiptir.


Bir öneri: Sorudaki grafik modelin Diagrammixbazı cevaplar gibi nasıl çoğaltılacağını gösterebilirsiniz .
Firebug




-1

SCAVIS'in bir Bayesian ağı var. "Scavis baysian network" google'ı deneyin. Aynı program Python (veya Java) sözdizimini kullanarak farklı diyagramlar çizebilir.


-1

draw.io kullanabilir ve bu simgeleri oluşturmak için bir veya daha fazla şablonunu kullanabilirsiniz. SVG veya başka bir format oluşturmanıza yardımcı olur. ve sisteminize herhangi bir şey yüklemenizi gerektirmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.