Here is my code:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.14, label style={font=\huge}, tick label style={font=\huge}}
\usepgfplotslibrary{fillbetween}
\begin{document}
\pgfmathdeclarefunction{t_dist}{1}{%
\pgfmathparse{gamma((#1 + 1)/2)/(\sqrt(#1pi)gamma(#1/2))*(1 + (x^2/#1))^(-(#1+1)/2)}%
}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=-3.5:3.5, samples=300,
axis x line=bottom, axis y line=left,
every axis y label/.style={at=(current axis.above origin),anchor=south},
every axis x label/.style={at=(current axis.right of origin),anchor=west},
height=5cm, width=14cm,
xtick={-3.5, -1.5, 0, 3.5}, ytick=\empty,
enlargelimits=false, clip=false, axis on top,
xticklabels={-$\infty$, -3, 0, $\infty$}, % so do it manually instead
]
\addplot [very thick,blue, name path=f] {t_dist(2)};
\path[name path=axis](axis cs:--3.5,0) -- (axis cs:-3,0);
\addplot[thick, color=blue, fill=blue, fill opacity=0.5] fill between [of=f and axis, soft clip={domain=-3.5:-1.5},];
\end{axis}
\end{tikzpicture}
\end{document}
It works just fine when I use a normal distribution, but for the t distribution I'm getting an error on line 23 that says "undefined control sequence".
Here's the working code with the normal distribution:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.14, label style={font=\huge}, tick label style={font=\huge}}
\usepgfplotslibrary{fillbetween}
\begin{document}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2sqrt(2pi))exp(-((x-#1)^2)/(2#2^2))}%
}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=-3.5:3.5, samples=300,
axis x line=bottom, axis y line=left,
every axis y label/.style={at=(current axis.above origin),anchor=south},
every axis x label/.style={at=(current axis.right of origin),anchor=west},
height=5cm, width=14cm,
xtick={-3.5, -1.5, 0, 3.5}, ytick=\empty,
enlargelimits=false, clip=false, axis on top,
xticklabels={-$\infty$, -3, 0, $\infty$},
]
\addplot [very thick,blue, name path=f] {gauss(0,1)};
\path[name path=axis](axis cs:--3.5,0) -- (axis cs:-3,0);
\addplot[thick, color=blue, fill=blue, fill opacity=0.5] fill between [of=f and axis, soft clip={domain=-3.5:-1.5},];
\end{axis}
\end{tikzpicture}
\end{document}
How can I plot a t distribution on 2 degrees of freedom using tikz?
pgfmathdoes not provide agammafunction, but Jake defines an approximation in that answer. – Torbjørn T. Sep 20 '20 at 17:41Package PGF Math Error: Unknown function 'gamma'– Sep 20 '20 at 17:42t_distjust for integer values it is OK and you can usefactorialfunction instead ofgammathat are equal for integers. – Sep 20 '20 at 18:07\sqrtshould besqrt(without backslash) in yourt_distfunction. – Sep 20 '20 at 18:08