Phần mềm vẽ mạng bayesian (mô hình đồ họa)


50

Tôi đang tìm kiếm phần mềm [miễn phí] có thể tạo ra các mô hình đồ họa đẹp mắt, ví dụ:

nhập mô tả hình ảnh ở đây

Mọi lơi đê nghị đêu nên được đanh gia cao.


1
Bạn có nghĩa là vẽ những bức tranh như thế này bạn đã liên kết hoặc vẽ các mô hình sẵn sàng từ một số phần mềm khác? Nếu sau này, từ đó?

Vẽ những bức tranh giống như bức tranh mà tôi đã liên kết
C. Reed

2
Nó được tạo thủ công trong Inkscape , vì vậy bạn có thể thử làm tương tự.

10
Thật tuyệt vời - bức tranh bạn cung cấp là bức tôi đã vẽ cho Wikipedia năm 2008 và tôi đã tìm thấy câu hỏi này khi tôi tìm ra cách vẽ lại nó vào năm 2012. Bạn cung cấp một PNG, nhưng ban đầu nó là một SVG . Trước đó, tôi đã sử dụng Inkscape và điều đó thật tồi tệ - tôi đã phải chỉnh sửa SVG để thêm các chữ cái Hy Lạp, bởi vì nó không thể xử lý nó trước đó (có lẽ nó vẫn không thể). Tôi không giới thiệu nó cho bất cứ ai. Tôi sẽ cung cấp cho các tikz tiếp cận một shot.
Bkkbrad

Khi tôi nói tôi không giới thiệu nó cho bất kỳ ai, tôi có nghĩa là tôi không giới thiệu Inkscape cho bất kỳ ai đang cố vẽ nhiều sơ đồ tấm nhất quán.
Bkkbrad

Câu trả lời:


34

Tôi hiện đang có một vấn đề tương tự (vẽ nhiều sơ đồ đường dẫn cho luận án của mình), và vì vậy tôi đã kiểm tra nhiều tùy chọn được liệt kê ở đây để vẽ sơ đồ tương tự. Nhiều tài nguyên được liệt kê để vẽ đồ họa vector như vậy (chẳng hạn như trong văn phòng microsoft hoặc bản vẽ google) có thể tạo ra các sơ đồ đường dẫn thực sự tốt đẹp, với nỗ lực khá tối thiểu. Nhưng, một phần lý do khiến tôi không hài lòng với các chương trình như vậy là tôi cần tạo ra nhiều sơ đồ, chỉ có những thay đổi khá nhỏ giữa mỗi sơ đồ (ví dụ: thêm một nút khác, thay đổi nhãn). Các công cụ đồ họa vector điểm và nhấp không phù hợp cho việc này và mất nhiều công sức hơn là cần thực hiện các thay đổi nhỏ như vậy. Ngoài ra, nó trở nên khó khăn để duy trì một mẫu giữa nhiều bản vẽ. Vì vậy, tôi quyết định kiểm tra các tùy chọn để tạo ra đồ họa như vậy theo chương trình.

Graphviz, như đã được đề cập bởi thias, đã thực sự gần như có tất cả chuông và còi tôi muốn cho đồ họa của mình (cũng như mã khá đơn giản để sản xuất chúng), nhưng nó không phù hợp với nhu cầu của tôi theo hai cách; 1) thiếu phông chữ toán học (ví dụ: Tôi không chắc liệu bạn có thể gắn nhãn một nút có ký hiệu trong Graphviz không, 2) các đường cong khó vẽ (xem bài đăng này về vẽ sơ đồ đường dẫn bằng cách sử dụng Graphviz trên trang web của @ Stask) . Vì những hạn chế này, hiện tại tôi đã giải quyết (rất vui) khi sử dụng thư viện vẽ Tikz / pgf trong latex. Một ví dụ dưới đây là nỗ lực của tôi trong việc tái tạo đồ họa của bạn (nỗi đau lớn nhất là các nhãn ở góc dưới bên phải của các hộp!);β

nhập mô tả hình ảnh ở đây

\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

Bây giờ, tôi đang đã viết lên luận án của tôi trong Latex, vì vậy nếu bạn chỉ muốn hình ảnh mà không cần phải biên dịch một tài liệu toàn Latex nó là hơi inconveniant, nhưng có một số cách giải quyết khá nhỏ để tạo ra một hình ảnh trực tiếp hơn (xem câu hỏi này trên trên stackoverflow). Có rất nhiều lợi ích khác khi sử dụng Tikz cho một dự án như vậy

  • Tài liệu mở rộng. Các nhãn hiệu PGF giữ bàn tay của bạn thông qua làm cho một số sơ đồ tương tự. Và một khi bạn bị ướt chân ...
  • Có một thư viện ví dụ khổng lồ để trình bày cách sản xuất nhiều loại đồ họa khổng lồ.
  • Và cuối cùng, trang web trao đổi ngăn xếp Tex là một nơi tốt để hỏi bất kỳ câu hỏi nào về Tikz. Họ có một số wizz ở đó làm cho một số đồ họa khá lạ mắt (kiểm tra blog của họ cho một số ví dụ).

Tại thời điểm này tôi chưa xem xét một số thư viện để vẽ sơ đồ trong gói thống kê R trực tiếp từ các mô hình đã chỉ định, nhưng trong tương lai tôi có thể xem xét chúng ở mức độ lớn hơn. Có một số ví dụ hay từ thư viện qgraph cho một bằng chứng về khái niệm về những gì có thể đạt được trong R.


1
Đối với những người quan tâm đến việc vẽ sơ đồ đường dẫn cho SEM (hoặc để biết thêm ý tưởng về những gì có thể đạt được trong các sản phẩm của Microsoft Office), tôi khuyên bạn nên xem tệp sơ đồ đường dẫn ppt của Jeremy Mile (ở cuối trang web được tham chiếu).
Andy W

1
Phản ứng tuyệt vời, đó là một chút của một đường cong học tập, nhưng giống như bất cứ điều gì TeX, tôi nghĩ rằng nó sẽ được đền đáp trong thời gian dài. Cảm ơn!
C. Sậy

30

Laura Dietz đã viết một thư viện rất hay cho tikz cho phép vẽ Bayesian Networks bằng latex mà không cần thực sự sử dụng trực tiếp tikz.

Để chứng minh gói này, xem ví dụ sau cho câu hỏi này:

\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

nhập mô tả hình ảnh ở đây

Mặc dù không hoàn toàn giống nhau, nhưng nó chắc chắn truyền tải cùng một thông tin và có thể được điều chỉnh để phù hợp hơn với các yêu cầu cụ thể. Gói này tạo ra các số liệu rất chấp nhận được mà không cần phải tìm hiểu gói tikz đầy đủ.


1
Thư viện này là tuyệt vời! Rất đơn giản hóa việc tạo ra các sơ đồ mạng bayes! Cám ơn vì đã chia sẻ.
fccoelho

Tôi đã thử phần mềm này và aft-pgm, phần mềm này dễ sử dụng hơn nhiều so với phần mềm kia. Cảm ơn tác giả cho phần mềm xuất sắc.
Thiện chí

12

Bạn không thể đánh bại http://daft-pgm.org/

Daft là gói Python sử dụng matplotlib để hiển thị các mô hình đồ họa xác suất hoàn hảo pixel để xuất bản trên tạp chí hoặc trên internet. Với tập lệnh Python ngắn và cú pháp xây dựng mô hình trực quan, bạn có thể thiết kế các mô hình được định hướng (Bayesian Networks, đồ thị theo chu kỳ có hướng) và các mô hình không bị chặn (trường ngẫu nhiên Markov) và lưu chúng ở bất kỳ định dạng nào mà matplotlib hỗ trợ (bao gồm PDF, PNG, EPS và SVG ).


Daft là tuyệt vời! đây phải là câu trả lời được chấp nhận
imho

Daft có một vài nhược điểm: Nó không tự động điều chỉnh các nút để phù hợp với văn bản, không tính toán bố cục của mạng, v.v ... Điều đó đã đủ để tắt tôi.
fccoelho

7

Bạn có thể thử GraphViz .

Điều này cho phép bạn chỉ định biểu đồ trong tệp văn bản và nó sẽ được vẽ tự động (tránh các mũi tên chồng chéo, v.v.). Tới đây (pdf) cho một ví dụ tối thiểu và một hướng dẫn.


5

Inkscape về cơ bản là một phiên bản Adobe Illustrator miễn phí và là một chương trình rất mạnh để thực hiện đồ họa vector, giống như hình ảnh bạn đã đăng. Nó cũng chơi khá độc đáo với hầu hết các gói thống kê để thực hiện các chỉnh sửa / chú thích cuối cùng / v.v. thành biểu đồ - R, SAS, v.v. có thể xuất một biểu đồ dưới dạng PDF hoặc định dạng vectơ khác (như .eps), sau đó bạn có thể đưa nó vào Inkscape để xử lý các màu, ký hiệu, nhãn trục, v.v.


Tôi thích các công cụ coi mũi tên là đối tượng đặc biệt: khi tôi di chuyển các biến xung quanh, tôi hy vọng các mũi tên sẽ theo sau. Có vẻ như Inkscape không thể làm điều này.
ziyuang

4

Nếu bạn có sở thích đặc biệt khi sử dụng LaTeX, chương trình LaTeXDraw có một số chức năng hay để tạo biểu đồ luồng với mã latex nhúng.

Nó nhập / xuất mã PSTricks và SVG, và cũng có thể xuất svg, pdf, eps, jpg, png, v.v. Nó chạy trong Linux, Mac OS X và Windows.


3

Dia là một chương trình mã nguồn mở miễn phí để vẽ sơ đồ. Tôi thấy nó hữu ích và không quá khó để bắt đầu.


1

Tôi đã tìm thấy Diagrammix là một gói rất linh hoạt, có sẵn cho Mac OS X. Đây là một gói đồ họa vector được làm tròn tốt và làm rất tốt các mô hình đồ họa. Nó khá rẻ và có một số tiện ích bổ sung tốt đã giúp cải thiện hình dạng và hướng của các cạnh.


Một gợi ý: bạn có thể chỉ ra cách tái tạo mô hình đồ họa trong câu hỏi Diagrammixgiống như một số câu trả lời đã làm.
Firebird

-1

Bạn có thể dùng thử Google Docs Draw . Có vẻ như nó sẽ làm những gì bạn muốn miễn phí, ngay trong trình duyệt của bạn.


Tôi đã thử nó, nhưng (IMHO) nó thiếu tính linh hoạt của Inkscape.
suncoolsu


-1

Bạn cũng có thể sử dụng ứng dụng web Lucidchart .

Tôi đã sử dụng nó trong quá khứ để vẽ đồ thị và nó miễn phí.


-1

SCAVIS có một mạng lưới Bayes. Hãy thử google "mạng scavis baysian". Cùng một chương trình có thể vẽ các sơ đồ khác nhau bằng cú pháp Python (hoặc Java).


-1

bạn có thể sử dụng draw.io và sử dụng một hoặc nhiều mẫu của chúng để tạo các biểu tượng này. Nó giúp bạn tạo SVG hoặc bất kỳ định dạng nào khác. và không yêu cầu bạn cài đặt bất cứ thứ gì trên hệ thống của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.