使用 pgfplots,有没有办法获取不同图中两个图的相同数据范围而无需手动输入边界?

使用 pgfplots,有没有办法获取不同图中两个图的相同数据范围而无需手动输入边界?

例子:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot table {
    0 0
    1 0
};
\end{axis}
\end{tikzpicture}
\caption{Figure 1}
\end{figure}

\begin{figure}
\begin{tikzpicture}
\begin{axis}
\addplot table {
    0 1
    1 1
};
\end{axis}
\end{tikzpicture}
\caption{Figure 2}
\end{figure}

\end{document}

这里,第一个图的 y 范围为 [-1, 1],而第二个图的 y 范围为 [-0.8, 1.2]。我希望两个图具有相同的范围,以自动覆盖两条线。

我怎样才能做到这一点而不手动输入 ymin/ymax?

答案1

到目前为止,我似乎可行的解决方案是将两个数据集都输入到两个图中,但在每个图中只绘制其中一个,使用[draw=none, forget plot]如下选项:

\documentclass{article}
\usepackage{fullpage}
\usepackage{subcaption}
\usepackage{pgfplots}
\begin{document}

\pgfplotstableread{
    0 0
    1 0
}\tableA

\pgfplotstableread{
    0 1
    1 1
}\tableB

\begin{figure}
\begin{subfigure}{0.5\textwidth}
\begin{tikzpicture}
\begin{axis}
\addplot table {\tableA};
\addplot [draw=none, forget plot] table {\tableB};
\end{axis}
\end{tikzpicture}
\caption{Foo}
\end{subfigure}
\begin{subfigure}{0.5\textwidth}
\begin{tikzpicture}
\begin{axis}
\addplot [draw=none, forget plot] table {\tableA};
\addplot table {\tableB};
\end{axis}
\end{tikzpicture}
\caption{Bar}
\end{subfigure}
\caption{Foobar}
\end{figure}

\end{document}

我还稍微改变了示例,将图表并排放置,因为这正是我最初想要的(为了更容易比较两个非重叠的图表)。

在此处输入图片描述

相关内容