Can anyone tell me how to plot a gaussian function/bell curve using TikZ/PGF? I'm basically looking to implement something like PSTricks's \psGauss
command.
-
great question and great solution, thank you! Some days ago I was searching for something like that but only found an example in the TikZ gallery which required gnuplot and did not work for me.– MostlyHarmlessApr 10, 2011 at 11:27
1 Answer
You can use pgfplots
to plot the functions. There's no standard macro for it, but the function isn't too complicated and can be added as a pgfmath
function (based on this answer: How do I use pgfmathdeclarefunction to create define a new pgf function?):
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{tikzpicture}
\begin{axis}[every axis plot post/.append style={
mark=none,domain=-2:3,samples=50,smooth}, % All plots: from -2:2, 50 samples, smooth, no marks
axis x line*=bottom, % no box around the plot, only x and y axis
axis y line*=left, % the * suppresses the arrow tips
enlargelimits=upper] % extend the axes a bit to the right and top
\addplot {gauss(0,0.5)};
\addplot {gauss(1,0.75)};
\end{axis}
\end{tikzpicture}
\end{document}
In my original answer, I had just declared a normal LaTeX function to the same end:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\newcommand\gauss[2]{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))} % Gauss function, parameters mu and sigma
\begin{tikzpicture}
\begin{axis}[every axis plot post/.append style={
mark=none,domain=-2:3,samples=50,smooth}, % All plots: from -2:2, 50 samples, smooth, no marks
axis x line*=bottom, % no box around the plot, only x and y axis
axis y line*=left, % the * suppresses the arrow tips
enlargelimits=upper] % extend the axes a bit to the right and top
\addplot {\gauss{0}{0.5}};
\addplot {\gauss{1}{0.75}};
\end{axis}
\end{tikzpicture}
\end{document}
-
Exactly what I needed, thank you. No way I would have worked this out on my own.– mikeFeb 18, 2011 at 5:22
-
1Quick fix on the equation.. a bit messy but the post eqn did not work for me..
\newcommand\gauss[2]{(1/(#2*(sqrt(2*pi))))*exp(-0.5*(((x-#1)/#2)^2))} % Gauss function, parameters mu and sigma
– user14907May 23, 2012 at 19:56 -
2Is there anything similar for Poisson distribution in PGF? Thanks in advance.– user17586Aug 14, 2012 at 15:13
-
-
@Adam: It compiles fine for me. What version of PGFPlots are you using?– JakeAug 28, 2012 at 11:16