在第 333 页的 PGFplots 手册中,作者描述了如何相对于另一个轴环境定位轴环境:
\begin{tikzpicture}
\begin{axis}[name=plot1,height=3cm,width=3cm]
\addplot coordinates {(0,0) (1,1) (2,2)};
\end{axis}
\begin{axis}[name=plot2,at={($(plot1.east)+(1cm,0)$)},anchor=west,height=3cm,width=3cm]
\addplot coordinates {(0,2) (1,1) (2,0)};
\end{axis}
\end{tikzpicture}
不幸的是,对于示波器来说,
\begin{tikzpicture}
\begin{scope}[name=scope1]
\draw (1,2) rectangle (3,4);
\end{scope}
\begin{scope}[at={($(scope1.east)+(1cm,0)$)},anchor=west]
\draw (5,6) rectangle (7,8);
\end{scope}
\end{tikzpicture}
,不起作用。我该如何让它工作?我对绝对定位不感兴趣,只对相对定位感兴趣。
答案1
这是一个用于local bounding box
获取第一个范围的边界框并用于shift
定义第二个范围的原点的解决方案:
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{scope}[local bounding box=scope1]
\draw (2,2) rectangle (3,4);
\end{scope}
\begin{scope}[shift={($(scope1.east)+(1cm,0)$)}]
\draw (0,0) rectangle (2,1);
\end{scope}
\end{tikzpicture}
\end{document}
答案2
编辑:以下答案仅供参考,但请注意,由于嵌套 tikzpictures 可能会导致一些微妙的副作用,因此不建议这样做。在大多数情况下,要构建“模块化”图片,您可以使用pic
文档第 18 章中记录的操作。在问题中这样的简单情况下,shift
和的组合fit
通常就足够了。
如果您需要将两个范围分开并希望将它们用作“模块”,我建议您使用两个嵌套 tikzpictures 的节点,如
\begin{tikzpicture}
\node(scope1){
\begin{tikzpicture}
\draw (1,2) rectangle (3,4);
\end{tikzpicture}
};
\node[at={($(scope1.east)+(1cm,0)$)},anchor=west] (scope2){
\begin{tikzpicture}
\draw (5,6) rectangle (7,8);
\end{tikzpicture}
};
\end{tikzpicture}