TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have tried without success to plot the curve of the chi-squared distribution. Is there a generous soul who can come to my rescue.

share|improve this question
Show what you've tried so far in form of a minimal example and add this to your question. – Thorsten Donig Jan 12 '12 at 20:33
Why haven't you accepted an answer? – Magpie Jan 22 '13 at 19:11
Thanks for the gnuplot and PSTricks based solution. But I am still looking for a TikZ based solution. Anyone to help? – Haseeb Mahmud Jun 29 '15 at 6:40
This is trivial using either pgfplots or even the plot option in tikz. I don't have access to a computer right now, but since you have the function to be plotted in closed form, using pgfplots (which uses tikz), it would require an \addplot[samples=200,domain=0.001:5]{function goes here}; or something like that. – JPi Jun 29 '15 at 7:07

If you can access gnuplot, you can try this. This is an adapted version of a gnuplot demo file.

enter image description here

    xlabel = $x$,
    ylabel = {Probability density},
    samples = 200,
    restrict y to domain = 0:0.5,
    domain = 0.01:15]
    \foreach \k in {1,...,8} {%
      \addplot+[mark={}] gnuplot[raw gnuplot] {%
        isint(x) = (int(x)==x);
        log2 = 0.693147180559945;
        set xrange [1.00000e-5:15.0000];
        set yrange [0.00000:0.500000];
        plot chisq(x,\k)};
    \addlegendentryexpanded{$k = \k$}}
share|improve this answer
To see a solution with LuaLaTeX, see here. – Azoun Jan 15 '12 at 1:07
The curve for the case $k=0$ is missing.This isn't exactly a surprise, because the chi-squared distribution isn't defined properly for $k=0$... I suggest you update the plot to drop the case $k=0$ from the legend. – Mico Jan 14 '15 at 8:28
@Mico Done. Thanks for the suggestion. – cjorssen Jan 15 '15 at 12:50

if you can use PSTricks, then it is easy. Run the example with xelatex


\psaxes[Dy=0.1,ticksize=0 3pt]{->}(0,0)(9.5,.6)


enter image description here

share|improve this answer
Thanks for taking the time to answer my request but when I run the code I have this message of error: ! Package xkeyval Error: plotpoints' undefined in families ,pstricks,pst-grad ,pst-slpe,pst-node,pst-fun'. See the xkeyval package documentation for explanation. Type H <return> for immediate help. ... l.5 \psset{xunit=1.2cm,yunit=10cm,plotpoints=200} ? x Any help would be appreciated. Sincerly. – Zbigniew Jan 18 '12 at 20:10
best result with texlive Unlike MiKTteX. Thank you to everyone. – Zbigniew Jan 18 '12 at 20:21
You may have an outdated version of pstricks. Since you're using TeX Live, call tlmgr update --self --all from your terminal (command prompt). – Werner Jan 18 '12 at 20:46
add \usepackage{pst-plot} to the preamble – Herbert Jan 18 '12 at 20:57

Here is a sketch of pure TikZ solution. The idea is that Gamma function is not available in tikz (tex), but the values of Gamma(k/2) for k=1,...,8 are simple. So we can "hardcode" them.

If somebody wants to put axes and legend, feel free to edit this answer ;)

    \clip (-1,-1) rectangle (15,10);
      \g in {sqrt(pi),1,sqrt(pi)/2,1,3/4*sqrt(pi),2,15/8*sqrt(pi),6}
        \draw[color=blue!\c!red,yscale=30] \z 
          plot (\x,{exp(ln(\x/2)*\k/2-ln(\x)-\x/2-ln(\g))});

enter image description here

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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