当我限制范围时,使用 pgfplots 会出现错误,但当我有无限制范围时则不会出现错误

当我限制范围时,使用 pgfplots 会出现错误,但当我有无限制范围时则不会出现错误

以下示例对于我来说编译得很好:

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

\begin{tikzpicture}
    \begin{axis}[axis lines=middle,
                 %%ymax=10,
                 ymin=-7,
                 ]
       \addplot [domain=-2:-1.001,   samples=25]  {(\x-1)/(\x^2-1)};
       \addplot [domain=-0.999:0.999,samples=20]  {(\x-1)/(\x^2-1)};
       \addplot [domain=1.001:2,     samples=25]  {(\x-1)/(\x^2-1)};
    \end{axis}
\end{tikzpicture}

\end{document}

但是当我取消注释该行时ymax=10,出现以下错误:

! Dimension too large.
<recently read> \pgf@yy 

l.14     \end{axis}

? 

这是怎么回事?我不想限制域名。

答案1

如果将 设置ymax10,则实际上是将 y 单位向量设置为约20 pt(默认height值为207 pt)。由于最高点的值为1000,因此最终位于20000 pt轴原点上方,这对 TeX 来说太远了,无法处理。如果让 PGFPlots 自动缩放单位向量,不规定 的值ymax,问题就会消失。

为了避免这个问题,除了ymax=10,还要使用restrict y to domain=-inf:20。这将过滤掉引起问题的点。

\addplot使用这种方法,您甚至可以对整个情节使用单个命令:

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

\begin{tikzpicture}
    \begin{axis}[axis lines=middle,
                 restrict y to domain=-20:20,
                 ymin=-10,
                 ymax=10,
                 ]
       \addplot [domain=-2:2, samples=100]  {(\x-1)/(\x^2-1)};
    \end{axis}
\end{tikzpicture}

\end{document}

相关内容