如何保持 pgfplots 中两个轴之间的比率

如何保持 pgfplots 中两个轴之间的比率

我有两个axis环境,它们都包含不同的图。但是,我确实想保持两者之间的可比性,即我希望两个图在纸上占用相同的空间,以便在 y 轴上进行坐标移动。将两个图设置为相同的高度并不能解决问题,因为它们的 ymax 值不同,因此两个图的比例会有所不同。

在此示例中

\documentclass[border=3mm]{standalone}

\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
        \begin{axis}
                \addplot coordinates {
                (0,0)
                (1,1)
                };
        \end{axis}
\end{tikzpicture}

\begin{tikzpicture} 
        \begin{axis}
                \addplot coordinates {
                (0,0)
                (1,1)
                };
                \addplot coordinates {
                (0,0)
                (1,2)
                };
        \end{axis}
\end{tikzpicture}
\end{document}

}

...我希望第二个轴框的高度自动达到第一个轴框的两倍,这样两个相同的图在两个轴环境中的缩放比例也相同。但实际结果看起来确实像这样:

在此处输入图片描述

答案1

您可以使用以下方法将第一个图的 y 单位向量长度保存到宏中

\pgfplotsextra{
    \global\edef\yunit{\pgfplotsunitylength}
}

然后可以通过设置 来设置第二个图中的 y 单位向量y=\yunit。但这只有在使用 时才会正常工作disabledatascaling,否则单位向量将无法正确报告。

\documentclass{article}

\usepackage{pgfplots}
\begin{document}

\pgfplotsset{
    scale only axis, % To make sure the plot *areas* are the same width
    width=5cm,
    enlarge y limits={abs=0.2}, % To make sure the axes are extended by the same absolute amount
    disabledatascaling
}

\begin{tikzpicture}
        \begin{axis}
                \addplot coordinates {
                (0,0)
                (1,2)
                };
        \pgfplotsextra{
            \global\edef\yunit{\pgfplotsunitylength}
        }
        \end{axis}
\end{tikzpicture}
\begin{tikzpicture} 
        \begin{axis}[y=\yunit]
                \addplot coordinates {
                (0,0)
                (1,2)
                };
                \addplot coordinates {
                (0,0)
                (1,3)
                };
        \end{axis}
\end{tikzpicture}
\end{document}

}

答案2

不是完全自动,但您可以指定高度,或指定 y 单位向量长度。

也许你可以使用 来通过 的值进行一些自动化来确定比例因子ymin ymax。这些可以通过\pgfkeysvalueof{/pgfplots/xmin},但根据如何在 PGFplots 轴环境中访问 \xmin、\xmax、\ymin、\ymax 仅当它们在轴选项中明确设置后,您才可以访问它们。

\documentclass[border=3mm]{standalone}

\usepackage{pgfplots}
\begin{document}

\pgfplotsset{yticklabel style={text width=3em,align=right}}
\begin{tikzpicture}
        \begin{axis}[height=6.0cm,width=10cm,scale only axis]
                \addplot coordinates {(0,0) (1,1)};
        \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
        \begin{axis}[height=12.0cm,width=10cm,scale only axis]
                \addplot coordinates {(0,0) (1,1)};
                \addplot coordinates {(0,0) (1,2)};
        \end{axis}
\end{tikzpicture}
\end{document}

同样不是自动的,但您可以通过指定单位向量的长度[y={<dimension>}]

\documentclass[border=3mm]{standalone}

\usepackage{pgfplots}
\begin{document}

\pgfplotsset{yticklabel style={text width=3em,align=right}}
\begin{tikzpicture}
        \begin{axis}[y=4cm]
                \addplot coordinates {(0,0) (1,1)};
        \end{axis}
\end{tikzpicture}

\begin{tikzpicture}
        \begin{axis}[y=4cm]
                \addplot coordinates {(0,0) (1,1)};
                \addplot coordinates {(0,0) (1,2)};
        \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容