繪製貝葉斯網絡的軟件(圖形模型)
我正在尋找可以生成漂亮圖形模型的 [免費] 軟件,例如
任何建議,將不勝感激。
我目前有一個類似的問題(為我的論文繪製多個路徑圖),所以我已經檢查了這裡列出的許多選項來繪製類似的圖表。許多列出的用於繪製此類矢量圖形的資源(例如在 microsoft office 或 google 繪圖中)可以生成非常漂亮的路徑圖,而且工作量非常小。但是,我對這樣的程序不滿意的部分原因是我需要製作許多圖表,每個圖表之間只有相當小的更改(例如添加另一個節點,更改標籤)。指向和單擊矢量圖形工具不太適合這種情況,並且需要花費更多的精力來進行如此小的更改。此外,在許多圖紙之間維護模板也變得困難。因此,我決定檢查以編程方式生成此類圖形的選項。
正如 thias 已經提到的,Graphviz 非常接近於擁有我想要的所有花里胡哨的圖形(以及生成它們的非常簡單的代碼),但它在兩個方面未能滿足我的需求;1)缺少數學字體(例如,我不確定您是否可以用Graphviz 中的符號,2) 曲線很難繪製(請參閱@Stask 網站上關於使用 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中的一些圖表的庫,但將來我可能會更大程度地考慮它們。qgraph 庫中有一些很好的示例,用於證明 R 中可以完成的工作。