我只想绘制参数为 10 和 1 的威布尔密度图。但是 pgfplot 给出了dimensions too large
错误。restrict y to domain
没有帮助。
有什么帮助吗?
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
[declare function={f(\x,\a,\b)= (\a/\b)*(\x/\b)^(\a-1)*exp(-(\x/\b)^\a);}]
\begin{axis}[samples=150]
\addplot[color=blue]{f(x,10,1)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
正如评论中提到的,LaTeX 无法处理您在计算过程中获得的值。但您可以使用它gnuplot
来进行计算。请在以下代码中找到两种方法。首先使用函数raw gnuplot
,其次“仅”gnuplot
使用先前定义的命令\Weibull
。
% used PGFPlots v1.14 and gnuplot v5.0 patchlevel 3
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\newcommand*\Weibull[3]{(#2/#3)*(#1/#3)^(#2-1)*exp(-(#1/#3)^#2)}
\begin{axis}[
smooth,
]
\addplot [color=blue,very thick] gnuplot [raw gnuplot] {
% set number of samples
set samples 100;
f(x,a,b)= (a/b)*(x/b)**(a-1)*exp(-(x/b)**a);
plot [x=0:2] f(x,10,1);
};
\addplot [color=red,very thick,dashed,samples=100,domain=0:2]
gnuplot {\Weibull{x}{10}{1}};
\end{axis}
\end{tikzpicture}
\end{document}