52

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.

1
  • 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. Apr 10, 2011 at 11:27

1 Answer 1

70

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}

pgfplots gauss distribution


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}
7
  • Exactly what I needed, thank you. No way I would have worked this out on my own.
    – mike
    Feb 18, 2011 at 5:22
  • 1
    Quick 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
    – user14907
    May 23, 2012 at 19:56
  • 2
    Is there anything similar for Poisson distribution in PGF? Thanks in advance.
    – user17586
    Aug 14, 2012 at 15:13
  • I get the Error Missing number treated as zero in line "\end{axis}
    – Adam
    Aug 28, 2012 at 11:09
  • @Adam: It compiles fine for me. What version of PGFPlots are you using?
    – Jake
    Aug 28, 2012 at 11:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.