如何使用 tikz 矩形分割将节点放置在分割处

如何使用 tikz 矩形分割将节点放置在分割处

我有以下代码:

\documentclass[tikz]{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{positioning}

\begin{document}
\tikzset{pblock/.style = {rectangle split, rectangle split horizontal,
                      rectangle split parts=3,
                      rectangle split part fill={red!30,blue!20,green!20}, draw, thick, align=center}}

\begin{tikzpicture}
  \node[pblock] (x) {\nodepart[text width=2cm]{one} Cell 1
                \nodepart[text width=4cm]{two}Cell 2
                \nodepart[text width=2cm]{three}Cell 3};
\node [above right=.6cm and 1.15cm of x.one south, anchor=base] {$x$};
\end{tikzpicture}

\tikzset{/tikz/pblock/.append style = {every one node part/.style={text width=1cm}}}
\end{document}

生成以下图像:

分裂细胞图像

值得注意的是,x使用以下行放置:

\node [above right=.6cm and 1.15cm of x.one south, anchor=base] {$x$};

显然,这需要进行一些调整才能获得精确的移位,以便将x直接放置在两个矩形之间的分隔线上方。我的问题是,我如何才能简单地将 放置x在此边界上方,而无需调整位置?一般来说,我也希望将 放置y在单元格 2 和单元格 3 之间的边界上方。

答案1

这几乎是在哪里可以找到 Tikz 的基本语法?在某种程度上,你只需要找到合适的锚点。在这种情况下:

\node [above=0pt of x.one split north] {$x$};

一般而言,除了最后一部分rectangle split,节点的其他部分都会有称为 的锚点<nodepart name> split <direction>。请参阅第节中的图表71.6 具有多个文本部分的形状在手册中。

答案2

@Torbjørn T. 的回答非常有帮助,尤其是参考。事实证明,我不仅需要将节点放置在分叉上方,还需要将其放置在末端。因此,我添加了以下代码:

\begin{tikzpicture}
  \node[name=s,pblock] (x) {\nodepart[text width=3cm]{one} Cell 1
                \nodepart[text width=4cm]{two}Cell 2
                \nodepart[text width=2cm]{three}Cell 3};
\draw[shift=(x.north west)] plot coordinates{(0,0)}
       node[above] {\scriptsize\texttt{$x_1$}};
\draw[shift=(x.one split north)] plot coordinates{(0,0)}
       node[above] {\scriptsize\texttt{$x_2$}};
\draw[shift=(x.two split north)] plot coordinates{(0,0)}
       node[above] {\scriptsize\texttt{$x_3$}};
\draw[shift=(x.north east)] plot coordinates{(0,0)}
       node[above] {\scriptsize\texttt{$x_4$}};
\end{tikzpicture}

生产

分割图像

这比前面提到的答案稍微复杂一些,但如果需要这些锚点,它会有所帮助!

相关内容