\begin{tikzpicture}
...
\end{tikzpicture}
\begin{tikzpicture}
...
\end{tikzpicture}
这样,两张图片就彼此相邻了。我希望后者正好位于第一张图片的上方。有没有内置方法可以实现这一点,还是我必须使用 hspace 或 s.th?
第一张图片被外部化了,所以我想这会阻止覆盖/记住图片的功能?!
答案1
在这种情况下,您不需要[remember picture]
或[overlay]
。只需在一个 tikzpicture 中执行此操作:将第一张图片中的代码放在scope
with内local bounding box=L
;并将第二张图片中的代码放在scope
with内[shift={(L.center)}]
。
\documentclass{article}
\usepackage{tikz,lipsum,amsmath}
\begin{document}
\lipsum[1]
\begin{center}
\begin{tikzpicture}
\begin{scope}[local bounding box=L]
\draw[violet] (0,0)--(0,3.5);
\draw[cyan,line width=2pt] (-1,0)--(4,0)--(0,3.5)--cycle;
\end{scope}
\fill (L.center) circle(.5);
\begin{scope}[shift={(L.center)}]
\draw[red,line width=1mm] (0,0) circle(1.5);
\end{scope}
\end{tikzpicture}
\end{center}
\lipsum[2]
\end{document}
答案2
正如评论中所提到的,您可以axis
在环境中定义多个环境,使用库来tikzpicture
命名它们,然后将它们彼此相对定位。calc
at={($ (plot1.east) + (1cm,0) $)},anchor=west,
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
name=plot1,
title=plot1,
title style={
at={(axis description cs:0.5,0.8)},
anchor=north},
]
\addplot[
color=blue,
]
coordinates {
(0,0)
(1,1)
};
\end{axis}
\begin{axis}[
name=plot2,
title=plot2,
title style={
at={(axis description cs:0.5,0.8)},
anchor=north},
at={($ (plot1.east) + (1cm,0) $)},
anchor=west,
]
\addplot[
color=red,
]
coordinates {
(0,0)
(1,1)
};
\end{axis}
\begin{axis}[
name=plot3,
title=plot3,
title style={
at={(axis description cs:0.5,0.8)},
anchor=north},
at={($ (plot1.south) - (0,1cm) $)},
anchor=north,
]
\addplot[
color=green,
]
coordinates {
(0,0)
(1,1)
};
\end{axis}
\begin{axis}[
name=plot4,
title=plot4,
title style={
at={(axis description cs:0.5,0.8)},
anchor=north},
at={($ (plot3.east)+(1cm,0) $)},
anchor=west,
]
\addplot[
color=orange,
]
coordinates {
(0,0)
(1,1)
};
\end{axis}
\end{tikzpicture}
\end{document}