ซอฟต์แวร์สำหรับการวาดเครือข่ายแบบเบย์ (โมเดลกราฟิก)


50

ฉันกำลังค้นหาซอฟต์แวร์ [ฟรี] ที่สามารถสร้างตัวแบบกราฟิกที่ดูดีได้เช่น

ป้อนคำอธิบายรูปภาพที่นี่

ข้อเสนอแนะใด ๆ ที่จะได้รับการชื่นชม


1
คุณหมายถึงการวาดภาพเช่นนี้ที่คุณเชื่อมโยงหรือวาดรูปแบบพร้อมจากซอฟต์แวร์อื่น ๆ ? ถ้าหลังซึ่งจากไหน

รูปวาดชอบรูปที่ฉันลิงค์
C. Reed

2
มันถูกสร้างขึ้นด้วยตนเองในInkscapeดังนั้นคุณสามารถลองทำเช่นเดียวกัน

10
ที่น่ากลัว - ภาพที่คุณให้เป็นหนึ่งฉันวาดสำหรับวิกิพีเดียในปี 2008 และผมพบว่าคำถามนี้เมื่อผมหาวิธีการวาดมันในปี 2012 ที่คุณให้ PNG แต่มันก็เดิมเป็น SVG เมื่อก่อนฉันใช้ Inkscape และมันแย่มาก - ฉันต้องแก้ไข SVG เพื่อเพิ่มตัวอักษรกรีกเพราะมันไม่สามารถจัดการมันได้ในตอนนั้น ฉันไม่แนะนำสำหรับทุกคน ฉันจะให้ tikz เข้าหาช็อต
Bkkbrad

เมื่อฉันบอกว่าฉันไม่แนะนำสำหรับทุกคนฉันหมายถึงฉันไม่แนะนำ Inkscape สำหรับทุกคนที่พยายามวาดไดอะแกรมที่สอดคล้องกันหลายแผ่น
Bkkbrad

คำตอบ:


34

ขณะนี้ฉันมีปัญหาที่คล้ายกัน (การวาดไดอะแกรมหลายพา ธ สำหรับวิทยานิพนธ์ของฉัน) ดังนั้นฉันจึงตรวจสอบตัวเลือกมากมายที่มีอยู่ในรายการแล้วเพื่อวาดไดอะแกรมที่คล้ายกัน แหล่งข้อมูลที่ระบุไว้จำนวนมากสำหรับการวาดกราฟิกเวกเตอร์ดังกล่าว (เช่นใน Microsoft Office หรือ Google drawings) สามารถสร้างไดอะแกรมพา ธ ที่ดีมากโดยใช้ความพยายามน้อยที่สุด แต่ส่วนหนึ่งของเหตุผลที่ฉันไม่พอใจกับโปรแกรมดังกล่าวคือฉันต้องการสร้างไดอะแกรมจำนวนมากโดยมีการเปลี่ยนแปลงเล็กน้อยเพียงเล็กน้อยระหว่างแต่ละไดอะแกรม (เช่นเพิ่มโหนดอื่นเปลี่ยนป้ายกำกับ) เครื่องมือกราฟิกแบบเวกเตอร์จุดและคลิกไม่เหมาะสำหรับสิ่งนี้และใช้ความพยายามมากกว่าที่จะต้องทำการเปลี่ยนแปลงเล็กน้อยเช่นนั้น นอกจากนี้ยังเป็นการยากที่จะรักษาแม่แบบระหว่างภาพวาดจำนวนมาก ดังนั้นฉันตัดสินใจที่จะตรวจสอบตัวเลือกในการผลิตกราฟิกดังกล่าวในทางโปรแกรม

β

ป้อนคำอธิบายรูปภาพที่นี่

\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

ตอนนี้ฉันกำลังเขียนวิทยานิพนธ์ของฉันในลาเท็กซ์ดังนั้นหากคุณต้องการภาพโดยไม่ต้องรวบรวมเอกสารลาเท็กซ์ทั้งหมดมันไม่สะดวกเล็กน้อย แต่มีวิธีแก้ปัญหาเล็กน้อยพอสมควรเพื่อสร้างภาพโดยตรง (ดูคำถามนี้มากกว่า บน stackoverflow) มีโฮสต์ของผลประโยชน์อื่น ๆ ที่จะใช้ Tikz สำหรับโครงการดังกล่าวว่า


ในเวลานี้ฉันยังไม่ได้พิจารณาห้องสมุดบางแห่งสำหรับการวาดไดอะแกรมในแพ็คเกจทางสถิติ R โดยตรงจากรุ่นที่ระบุ แต่ในอนาคตฉันอาจพิจารณาให้มากขึ้น มีตัวอย่างที่ดีจากqgraph ไลบรารี่สำหรับพิสูจน์แนวคิดว่าสามารถทำอะไรได้บ้างในอาร์


1
สำหรับผู้ที่สนใจในการวาดแผนผังเส้นทางสำหรับ SEM (หรือสำหรับแนวคิดเพิ่มเติมเกี่ยวกับสิ่งที่สามารถทำได้ในผลิตภัณฑ์ Microsoft Office) ฉันขอแนะนำให้คุณตรวจสอบไฟล์ ppt ของ Jeremy Mile ของ ppt ของแผนภาพเส้นทาง (ที่ด้านล่างของหน้าเว็บอ้างอิง)
Andy W

1
การตอบสนองที่ยอดเยี่ยมมันเป็นช่วงของการเรียนรู้ แต่เหมือน TeX ทุกอย่างฉันคิดว่ามันจะได้ผลในระยะยาว ขอบคุณ!
C. Reed

30

Laura Dietzได้เขียนห้องสมุดที่ดีมากสำหรับ tikz ที่สามารถวาดภาพของ Bayesian Networks ในน้ำยางได้โดยไม่จำเป็นต้องใช้ 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 อันนี้ใช้งานได้ง่ายกว่าอีกอันหนึ่ง ขอบคุณผู้เขียนสำหรับซอฟต์แวร์ที่ยอดเยี่ยม
Good Will

12

คุณไม่สามารถเอาชนะhttp://daft-pgm.org/

Daft เป็นแพ็คเกจ Python ที่ใช้ matplotlib ในการสร้างแบบจำลองความน่าจะเป็นแบบพิกเซลที่สมบูรณ์แบบสำหรับการเผยแพร่ในวารสารหรือบนอินเทอร์เน็ต ด้วยสคริปต์ Python แบบสั้นและรูปแบบการสร้างรูปแบบที่ใช้งานง่ายคุณสามารถออกแบบแบบชี้นำ (Bayesian Networks, กราฟ acyclic กำกับ) และแบบจำลองที่ไม่ได้บอกทิศทาง (Markov random field) และบันทึกไว้ในรูปแบบใด ๆ ที่ matplotlib รองรับ )


บ้าคลั่ง! นี่ควรเป็นคำตอบที่ยอมรับได้ imho
dominik andreas

Daft มีข้อบกพร่องเล็กน้อย: มันไม่ได้ทำการปรับขนาดโหนดให้พอดีกับข้อความ, ไม่คำนวณเลย์เอาต์ของเครือข่าย, ฯลฯ นั่นก็เพียงพอแล้วที่จะปิดฉัน
fccoelho

7

คุณอาจจะลองGraphViz

สิ่งนี้ช่วยให้คุณสามารถระบุกราฟในไฟล์ข้อความและมันจะถูกวาดโดยอัตโนมัติ (หลีกเลี่ยงลูกศรที่ทับซ้อนกันเป็นต้น) ไปที่นี่ (pdf) เพื่อดูตัวอย่างและคู่มือเล็กน้อย


5

Inkscapeเป็น Adobe Illustrator รุ่นฟรีและเป็นโปรแกรมที่แข็งแกร่งมากสำหรับการทำกราฟิกแบบเวกเตอร์เช่นภาพที่คุณโพสต์ นอกจากนี้ยังเล่นได้ค่อนข้างดีกับแพ็คเกจทางสถิติส่วนใหญ่สำหรับการแก้ไข / คำอธิบายประกอบ / etc ขั้นสุดท้าย ไปยังกราฟ - R, SAS, ฯลฯ สามารถแสดงผลกราฟเป็น PDF หรือรูปแบบเวกเตอร์อื่น ๆ (เช่น. eps) และจากนั้นคุณสามารถนำมันไปยัง Inkscape เพื่อยุ่งเกี่ยวกับสีสัญลักษณ์แกนป้าย ฯลฯ


ฉันชอบเครื่องมือที่ใช้ลูกศรเป็นวัตถุพิเศษ: เมื่อฉันย้ายตัวแปรไปรอบ ๆ ฉันหวังว่าลูกศรจะตามมา ดูเหมือนว่า Inkscape ไม่สามารถทำได้
ziyuang

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

คุณอาจจะลองGoogle Docs วาด ดูเหมือนว่ามันจะทำสิ่งที่คุณต้องการฟรีในเบราว์เซอร์ของคุณ


ฉันได้ลองแล้ว แต่ (IMHO) มันไม่มีความยืดหยุ่นของ Inkscape
suncoolsu



-1

SCAVISมีเครือข่ายแบบเบย์ ลองใช้ google "scavis baysian network" โปรแกรมเดียวกันสามารถวาดไดอะแกรมต่าง ๆ โดยใช้ Python (หรือ Java) ไวยากรณ์


-1

คุณสามารถใช้ draw.io และใช้หนึ่งหรือหลายแม่แบบของพวกเขาเพื่อสร้างไอคอนเหล่านี้ ช่วยให้คุณสร้าง SVG หรือรูปแบบอื่น ๆ และไม่ต้องการให้คุณติดตั้งอะไรบนระบบของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.