我有以下 pgfplots 代码:
\begin{tikzpicture}
\begin{axis}[domain=-8:2]
\foreach \i in {-10,-9.8,...,10} {\addplot+[smooth] {-x/\i+\i};}%
\end{axis}
\end{tikzpicture}
我需要几条线图才能使抛物线图案出现,因此 for 循环的增量为 0.2。不幸的是,这给了我错误dimension too large
。我该怎么办?
答案1
除了明显的 1/0 除法之外,问题不在于数学,而在于 TeX,即为什么 pgfplots 会失败。pgfplots 可能会抱怨,因为 1/0 的任何内部表示都“太大”而无法绘制。解决方案是使用restrict y to domain
\documentclass[12pt]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-8:2, restrict y to domain=-10:10]
\foreach \i in {-10,-9.8,...,10} {\addplot+[no markers, solid, smooth] {-x/\i+\i};}%
\end{axis}
\end{tikzpicture}
\end{document}
(话虽如此,但一般来说,允许除以零还是很危险的。)
答案2
在循环中间\i
=0,这样就会出现除以零的情况。数学通常不喜欢这样(尽管有趣的是,代码在我的计算机上编译通过了)。因此,您必须将循环拆分为两个循环,不包括零:
\documentclass[12pt]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-8:2]
\foreach \i in {-10,-9.8,...,-0.2} {\addplot+[smooth] {-x/\i+\i};}%
\foreach \i in {0.2,0.4,...,10} {\addplot+[smooth] {-x/\i+\i};}%
\end{axis}
\end{tikzpicture}
\end{document}