以下示例对于我来说编译得很好:
\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
如果将 设置ymax
为10
,则实际上是将 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}