是否可以使用 Tikz 绘制该网络?

是否可以使用 Tikz 绘制该网络?

我正在尝试绘制如下图所示的网络。我可以使用标记、节点和边绘制类似的网络,但问题是我只能通过边连接节点。

我需要的是通过边连接节点内的标记如下图所示:(本例中节点R有两个Token,其中一个连接到节点A,另一个连接到节点B。)

是否可以使用 Tikz 实现这一点?

网络

这是我迄今为止尝试过的:

\begin{tikzpicture}[node distance=1.5cm] 
\begin{scope} 
\node [place,tokens=1](0)[label=below:$A$]{}; 
\node [place,tokens=2] (1) [right of=0,label=below:$R$] {} edge (0); 
\node [place,tokens=1] (2) [right of=1,label=below:$B$] {} edge (1); 
\end{scope} 
\end{tikzpicture} 

答案1

众多可能的方法之一:

在此处输入图片描述

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning, fit}
\begin{document}
\begin{tikzpicture}[
  dot/.style={fill,circle, minimum size=5pt,inner sep=0,node contents={}},
  circ/.style={draw, circle, minimum size=10pt,inner sep=0pt, node contents={}}
]

\node [dot, name=n1];
\node [dot, name=n2, right=of n1];
\node [dot, name=n3, right=5mm of n2];
\node [dot, name=n4, right=of n3];

\draw (n1) -- (n2) (n3) -- (n4);

\node [circ,fit=(n2)(n3), label={[name=R]below:R}];
\node [circ, left, at=(n1.east), name=A];
\node [circ, right, at=(n4.west), name=B];

\node at (A |- R) {A};
\node at (B |- R) {B};
\end{tikzpicture}
\end{document}

答案2

只需使用arrows.meta库,Circle即可根据需要使用和自定义笔尖,例如,>={Circle[length=5pt]}, shorten >= -5pt, shorten <= -5pt将使用5pt实心圆,并将线的两边延长相同的量。如果您希望笔尖从内部接触圆,只需\pgflinewidth从上面减去另一个即可。

\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[>={Circle[length=5pt]}, shorten >= -5pt-\pgflinewidth, shorten <= -5pt-\pgflinewidth]

\node(a) at (0,0) [draw,circle,minimum size=.5cm]{};
\node(r) at (2,0) [draw,circle,minimum size=1cm]{};
\node(b) at (4,0) [draw,circle,minimum size=.5cm]{};

\node at ([yshift=-2em]a) {A};
\node at ([yshift=-2em]r) {R};
\node at ([yshift=-2em]b) {B};

\draw[<->] (a) -- (r);
\draw[<->] (r) -- (b);

\end{tikzpicture}

\end{document

在此处输入图片描述

相关内容