使用 pgfplots 绘图时尺寸太大

使用 pgfplots 绘图时尺寸太大

我有以下 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}

结果

相关内容