How to Plot a Chi-Square Distribution in Python?

Plotting a Chi-Square Distribution in Python can be done using the SciPy library, which provides functions for plotting and computing the parameters and properties of the Chi-Square Distribution. The chi2.pdf() function can be used to plot the probability density function, while the chi2.cdf() function can be used to plot the cumulative distribution function. Additionally, the chi2.ppf() function can be used to calculate the percentile points for the Chi-Square Distribution.


To plot a Chi-Square distribution in Python, you can use the following syntax:

#x-axis ranges from 0 to 20 with .001 steps
x = np.arange(0, 20, 0.001)

#plot Chi-square distribution with 4 degrees of freedom
plt.plot(x, chi2.pdf(x, df=4))

The x array defines the range for the x-axis and the plt.plot() produces the curve for the Chi-square distribution with the specified degrees of freedom.

The following examples show how to use these functions in practice.

Example 1: Plot a Single Chi-Square Distribution

The following code shows how to plot a single Chi-square distribution curve with 4 degrees of freedom

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2

#x-axis ranges from 0 to 20 with .001 steps
x = np.arange(0, 20, 0.001)

#plot Chi-square distribution with 4 degrees of freedom
plt.plot(x, chi2.pdf(x, df=4))

Plot Chi-Square distribution in Python

You can also modify the color and the width of the line in the graph:

plt.plot(x, chi2.pdf(x, df=4), color='red', linewidth=3)

Example 2: Plot Multiple Chi-Square Distributions

The following code shows how to plot multiple Chi-square distribution curves with different degrees of freedom:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2

#x-axis ranges from 0 to 20 with .001 steps
x = np.arange(0, 20, 0.001)

#define multiple Chi-square distributions
plt.plot(x, chi2.pdf(x, df=4), label='df: 4')
plt.plot(x, chi2.pdf(x, df=8), label='df: 8') 
plt.plot(x, chi2.pdf(x, df=12), label='df: 12') 

#add legend to plot
plt.legend()

Feel free to modify the colors of the lines and add a title and axes labels to make the chart complete:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2

#x-axis ranges from 0 to 20 with .001 steps
x = np.arange(0, 20, 0.001)

#define multiple Chi-square distributions
plt.plot(x, chi2.pdf(x, df=4), label='df: 4', color='gold')
plt.plot(x, chi2.pdf(x, df=8), label='df: 8', color='red')
plt.plot(x, chi2.pdf(x, df=12), label='df: 12', color='pink') 

#add legend to plot
plt.legend(title='Parameters')

#add axes labels and a title
plt.ylabel('Density')
plt.xlabel('x')
plt.title('Chi-Square Distributions', fontsize=14)

Plot multiple Chi-square distributions in Python

Refer to the for an in-depth explanation of the plt.plot() function.

x