跨子图对齐轴

跨子图对齐轴

如何水平对齐后续子图的 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折叠它们的宽度并右对齐。

每个子图的yminymax都是已知的,因此如果这是一个解决方案的话,我可以对它们进行硬编码。

答案1

我找到了一个解决方案。添加选项trim axis lefttikzpicture切断轴左侧的所有内容。与\centering之前的组合subfigure可以很好地对齐图。

\begin{subfigure}[t]{\linewidth}
    \centering
    \begin{tikzpicture}[trim axis left]
        \begin{axis}[my plot]
            ...

在此处输入图片描述

相关内容