我最接近的是这个代码,它使用了 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}