我正在尝试对齐 3 个图的轴,这些图的组织方式如下:第一行有两个图,第二行有一个图。我希望第三个图的轴与第一行图的轴对齐。最佳做法是什么?
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[group style={group size= 2 by 1, horizontal sep=0.12\textwidth, vertical sep=0.0\textwidth,}]
\nextgroupplot[
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.38\columnwidth,
height=0.253125\columnwidth,]
\addplot {rnd};
\nextgroupplot[
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.38\columnwidth,
height=0.253125\columnwidth,]
\addplot {rnd};
\end{groupplot}
\end{tikzpicture}
\vspace{0.5cm}
\centering
\begin{tikzpicture}
\begin{axis}[
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.80\columnwidth,
height=0.253125\columnwidth,]
\addplot {rnd};
\end{axis}
\end{tikzpicture}
答案1
我猜您想让底部轴的左/右边缘与顶部两个轴的外边缘对齐?
首先,这显然意味着底部轴的宽度必须等于两个顶部轴的总宽度加上它们之间的空间。您scale only axis
到处都在使用,并且您已经明确指定了前两个轴的所有长度,因此这是一个简单的计算。您甚至可以使用 来pgf
为您计算width=2*0.38\columnwidth+0.12\textwidth
。
此外,您必须确保水平对齐正确。如果 ticklabels/ylabels 在第一轴和第三轴上的宽度不同,则如果它们位于不同的tikzpicture
s 中,则可能会出现错误的对齐。我会做的是将所有内容放在同一个 中tikzpicture
,并将第三轴相对于第一轴放置。有几种方法可以做到这一点,下面我选择了可能是最懒惰的选项,并yshift
在大轴上添加了一个负数。
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[
group style={
group size= 2 by 1,
horizontal sep=0.12\textwidth,
vertical sep=0.0\textwidth,
group name=toprow
}]
\nextgroupplot[
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.38\columnwidth,
height=0.253125\columnwidth,]
\addplot {rnd};
\nextgroupplot[
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.38\columnwidth,
height=0.253125\columnwidth,]
\addplot {rnd};
\end{groupplot}
% put all plots in same tikzpicture
\begin{axis}[
yshift=-0.35\columnwidth, % <-- added
scale only axis=true,
xlabel = {$x$},
ylabel = {$y$},
width=0.76\columnwidth+0.12\textwidth, % modified
height=0.253125\columnwidth
]
\addplot {rnd};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}