![为什么我不能将一个节点放置于另一个节点之下?](https://linux22.com/image/350016/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%B8%8D%E8%83%BD%E5%B0%86%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E6%94%BE%E7%BD%AE%E4%BA%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B9%8B%E4%B8%8B%EF%BC%9F.png)
我尝试将一个节点放置在另一个节点下,但这似乎不可能。
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,shadows,shadows.blur,positioning,calc,arrows.meta,automata} \usepackage[latin1]{inputenc}
\usepackage{verbatim}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
semithick]
\tikzstyle{every state}=[fill=black,draw=none,text=white]
\node[state] (A_1) {Sunny};
\node[state] (B_1) [below of = A_1] {Cloudy};
\node[state] (C_1) [below of = B_1] {Rainy};
\node[state] (A_2) [right of = A_1] {Sunny};
\node[state] (B_2) [right of = B_1] {Cloudy};
\node[state] (C_2) [right of = C_1] {Rainy};
\node[state] (A_3) [right of = A_2] {Sunny};
\node[state] (B_3) [right of = B_2] {Cloudy};
\node[state] (C_3) [right of = C_2] {Rainy};
\tikzstyle{every state}=[fill=blue,draw=none,text=white]
\node[state] (O1) [below of = A_3] {dry};
%\node[state] (O2) [right of = O1] {damp};
%\node[state] (O3) [right of = O2] {soggy};
\path (A_1) edge node {} (A_2)
(A_1) edge node {} (B_2)
(A_1) edge node {} (C_2)
(B_1) edge node {} (A_2)
(B_1) edge node {} (B_2)
(B_1) edge node {} (C_2)
(C_1) edge node {} (A_2)
(C_1) edge node {} (B_2)
(C_1) edge node {} (C_2)
(A_2) edge node {} (A_3)
(A_2) edge node {} (B_3)
(A_2) edge node {} (C_3)
(B_2) edge node {} (A_3)
(B_2) edge node {} (B_3)
(B_2) edge node {} (C_3)
(C_2) edge node {} (A_3)
(C_2) edge node {} (B_3)
(C_2) edge node {} (C_3);
\end{tikzpicture}
\caption{Example of Markov chain}
%\label{fig:ex-markov}
\end{figure}
\end{document}
我正在尝试放置
\node[state] (O1) [below of =of A_3] {dry};
但不知何故,状态没有放在 A_3 下,而是放在 C_2 下。
它看起来是这样的,红线显示了我想要的位置。不是精确的距离,而是在 A_3 下方,使用固定距离。
答案1
考虑到红线的位置,你显然想要
below of=C_1
而不是
below of=A_3
否则,节点将被放置在下方,A_3
即的顶部B_3
。
您似乎认为您的节点排列如下:
A_1 B_1 C_1
A_2 B_2 C_2
A_3 B_3 C_3
但你却用这种方式画它们:
A_1 A_2 A_3
B_1 B_2 B_3
C_1 C_2 C_3
答案2
请参阅 TikZ 手册“17.5.3 高级放置选项”。键below of
等above of
已被弃用,取而代之的是tikz 库中更灵活的below
等。above
positioning
举例来说,您可以写[below=of A_3]
甚至[below=2 of A_3]
来指定距离。
请注意,除非您指定该on grid
选项,否则节点之间的距离将是它们之间的空间长度,而不是它们的中心之间的距离。
编辑:阅读评论后,我意识到问题可能是对选项的效果的误解below
:的效果below=of A
是将节点放置在下方,A
其边缘之间的距离为1
(确切的测量值取决于缩放等,但默认为 1cm)。现在,似乎您希望dry
将其放置在下方A
但非常接近它。这就是使用样式时会发生的情况label=below:dry
:\node[state] (A_3) [right=of A_2,label={[state]below:dry}] {Sunny};
。您也可以指定距离,尝试below=.1 of A
。如果这不是问题,请尝试更具体并准确报告问题的性质(即“不喜欢下面的用法”是什么意思?你收到错误了吗?)