我有一个有效的gnuplot
函数(在中绘制得很好gnuplot
),但pgfplots
使用失败:
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgfplots}
\begin{document}
\begin{figure}[H]
\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\pgfplotsset{samples=200}
\centering
\begin{tikzpicture}
\begin{axis}[mark=none, style=solid,
enlargelimits=false,
xmin=0,xmax = 2.5,
ymin=0,ymax = 2.5]
%
\addplot gnuplot{3*(x**(3-1))*exp(-x**3)};
%
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
错误是
PGFPlots: reading {testplots.pgf-plot.table}
! Package pgfplots Warning: Axis range for axis y is approximately empty; enlarging it (it is [0.0:0.0])
! Package PGF Math Error: You've asked me to divide `231.00105000000000' by `0.0', but I cannot divide any number by `0.0'.
答案1
快速解决方法是远离导致数据爆炸的部分。因此,如果您提供密钥,domain=0:2.5
它就会正常工作而不会出现任何错误。
我最初的想法是:问题在于绘制函数的默认域是(如 egreg 所述)[-5,5]。由于负数会使指数项爆炸,(第一个实例给出 e^125 )。
然而,事情变得越来越奇怪,这让我认为这不仅仅是一个溢出问题。例如,从 -5 开始,使用domain=-5:2
它会出现上述错误,但当这个键被赋予domain=-2.4:2
up to时domain=-2.369:2
,它会出现这个
\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\pgfplotsset{samples=200}
\begin{tikzpicture}
\begin{axis}[no marks, style=solid,
enlargelimits=false,
xmin=-5,xmax = 2.5,
ymin=0,ymax = 5,domain=-2.369:2]
%
\addplot gnuplot{3*(x**(3-1))*exp(-x**3)};
%
\end{axis}
\end{tikzpicture}
注意违反了ymax
。此外,如果我尝试增加值ymax
,它会给我一个。更奇怪的是,当我们超过 -2.369 走向更高的值时,Dimension too large error
它开始出错。但如果我完全删除该选项,我会得到Dimension too large
ymax
所以在看到我已经删除了 ymax 并让原始代码运行后,我得到了令人惊讶的结果。
我猜在轴限值计算过程中出现了问题。所以这可能是一个错误或内部限制。