绘制图形模型/bayesnet

绘制图形模型/bayesnet

我想画这样的东西 在此处输入图片描述

我最接近的是这个代码,它使用了 bayesnet 包

\documentclass{article} 
\usepackage{tikz}
\usetikzlibrary{bayesnet}
\usetikzlibrary{arrows}
\usepackage{color}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usetikzlibrary{backgrounds}


\begin{document}

\begin{figure}
  \tikz{
% nodes
 \node[obs] (x) {$x$};%
 \node[latent,above=of x,xshift=-1cm,fill] (y) {$y$}; %
 \node[latent,above=of x,xshift=1cm] (z) {$z$}; %
 \draw (0,1.69) circle(.36cm);
% plate
 \plate [inner sep=.25cm,yshift=.2cm] {plate1} {(x)(y)(z)} {$N$}; %
% edges
 \edge {y,z} {x}  }
\end{figure}

\end{document}

在此处输入图片描述

但我无法得到半实心圆作为 y 的圆。bayesnet 的优点是绘制不同的图形模型相对容易,所以我正在尝试使用 bayesnet 寻找解决方案(如果可能的话)。

答案1

我不知道bayesnet,所以我提供了一个解决方案path picture。它填充了由真实节点边框剪切的节点内部的矩形。

\documentclass{standalone} 
\usepackage{tikz}
\usetikzlibrary{bayesnet}
\usetikzlibrary{arrows}
\usepackage{color}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usetikzlibrary{backgrounds}


\begin{document}

%\begin{figure}
  \tikz{
% nodes
 \node[obs] (x) {$x$};%
 \node[latent,above=of x,xshift=-1cm,path picture={\fill[gray!25] (path picture bounding box.south) rectangle (path picture bounding box.north west);}] (y) {$y$}; %
 \node[latent,above=of x,xshift=1cm] (z) {$z$}; %
 \draw (0,1.69) circle(.36cm);
% plate
 \plate [inner sep=.25cm,yshift=.2cm] {plate1} {(x)(y)(z)} {$N$}; %
% edges
 \edge {y,z} {x}  }
%\end{figure}

\end{document}

在此处输入图片描述

相关内容