我想绘制给定自由度的学生 t 分布的 pdf并填充曲线下的区域在给定的间隔内。
我找到的 Student's-t 分布曲线的解决方案使用gnuplot
,这在某种程度上使得(对我来说)更难找到填充该区域的方法。我按以下方式创建了曲线:
\documentclass{standalone}
\usepackage{pgfplots}
\def\basefunc{
gamma((\n+1)/2.)/(sqrt(\n*pi)*gamma(\n/2.))*((1+(x*x)/\n)^(-(\n+1)/2.))
}
\def\n{7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=200,ymin=0,xmin=-6,xmax=6]
\addplot gnuplot [black,thick,smooth,no marks,domain={-6:+6}]{\basefunc};
\end{axis}
\end{tikzpicture}
\end{document}
我需要这样的东西(最重要的是阴影,不需要标签):
我很感激任何有关如何以类似方式填充它的想法。
答案1
或者使用不同的域绘制三次,用于\closedcycle
填充图。
\documentclass{standalone}
\usepackage{pgfplots}
\def\basefunc{
gamma((\n+1)/2.)/(sqrt(\n*pi)*gamma(\n/2.))*((1+(x*x)/\n)^(-(\n+1)/2.))
}
\def\n{7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=200,ymin=0,xmin=-6,xmax=6]
\addplot gnuplot [no marks,fill=blue,domain={-6:-2}]{\basefunc} \closedcycle;
\addplot gnuplot [no marks,fill=red,domain={2:6}]{\basefunc} \closedcycle;
\addplot gnuplot [black,thick,smooth,no marks,domain={-6:6}]{\basefunc};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您可以使用fillbetween
pgfplots 库(pgfplots 文档中的第 5.7 节)。
由于您想要填充两个不相交的区域,因此需要两个命令,每个区域一个。
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\def\basefunc{
gamma((\n+1)/2.)/(sqrt(\n*pi)*gamma(\n/2.))*((1+(x*x)/\n)^(-(\n+1)/2.))
}
\def\n{7}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=200,ymin=0,xmin=-6,xmax=6]
\addplot[name path=A] gnuplot [black,thick,smooth,no marks,domain={-6:+6}]{\basefunc};
\path [name path=axis]
(rel axis cs:0,0) --
(rel axis cs:1,0);
\addplot[orange] fill between [of=A and axis, soft clip={domain=-6:-2}];
\addplot[pink] fill between [of=A and axis, soft clip={domain=2:6}];
\end{axis}
\end{tikzpicture}
\end{document}