如何水平对齐后续子图的 y 轴?就像在这个测试用例中一样:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{subcaption}
\begin{document}
\begin{figure}[t]
\pgfplotsset{
my plot/.style = {
width = \linewidth,
height = 4cm,
axis lines = left
}
}
\centering
\begin{subfigure}[t]{\linewidth}
\centering
\begin{tikzpicture}
\begin{axis}[my plot]
\addplot {rand};
\end{axis}
\end{tikzpicture}
\caption{first}
\end{subfigure}
\\
\begin{subfigure}[t]{\linewidth}
\centering
\begin{tikzpicture}
\begin{axis}[my plot]
\addplot {rand*100};
\end{axis}
\end{tikzpicture}
\caption{second}
\end{subfigure}
\\
\begin{subfigure}[t]{\linewidth}
\centering
\begin{tikzpicture}
\begin{axis}[my plot]
\addplot {rand*5000};
\end{axis}
\end{tikzpicture}
\caption{third}
\end{subfigure}
\caption{test figure}
\end{figure}
\end{document}
轴应该位于红线上,彼此叠放,但由于 y 轴刻度标签宽度不同,它们会水平移动。
我觉得将extra y ticks
和结合起来hphantom
以适应最宽的刻度标签可能会有效,但我还没能弄清楚任何事情。
我无法实现的另一种可能性是将每个标签包装起来以rlap
折叠它们的宽度并右对齐。
每个子图的ymin
和ymax
都是已知的,因此如果这是一个解决方案的话,我可以对它们进行硬编码。
答案1
我找到了一个解决方案。添加选项trim axis left
以tikzpicture
切断轴左侧的所有内容。与\centering
之前的组合subfigure
可以很好地对齐图。
\begin{subfigure}[t]{\linewidth}
\centering
\begin{tikzpicture}[trim axis left]
\begin{axis}[my plot]
...