A “bell curve” is the nickname given to the shape of a normal distribution, which has a distinct “bell” shape:

This tutorial explains how to make a bell curve in Python.

**How to Create a Bell Curve in Python**

The following code shows how to create a bell curve using the **numpy**, **scipy**, and **matplotlib** libraries:

import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm #create range of x-values from -4 to 4 in increments of .001 x = np.arange(-4, 4, 0.001) #create range of y-values that correspond to normal pdf with mean=0 and sd=1 y = norm.pdf(x,0,1) #define plot fig, ax = plt.subplots(figsize=(9,6)) ax.plot(x,y) #choose plot style and display the bell curve plt.style.use('fivethirtyeight') plt.show()

**How to Fill in a Bell Curve in Python**

The following code illustrates how to fill in the area under the bell curve ranging from -1 to 1:

x = np.arange(-4, 4, 0.001) y = norm.pdf(x,0,1) fig, ax = plt.subplots(figsize=(9,6)) ax.plot(x,y) #specify the region of the bell curve to fill in x_fill = np.arange(-1, 1, 0.001) y_fill = norm.pdf(x_fill,0,1) ax.fill_between(x_fill,y_fill,0, alpha=0.2, color='blue') plt.style.use('fivethirtyeight') plt.show()

Note that you can also style the graph in any way you’d like using the many **matplotlib **styling options. For example, you could use a “solar light” theme with a green line and green shading:

x = np.arange(-4, 4, 0.001) y = norm.pdf(x,0,1) fig, ax = plt.subplots(figsize=(9,6)) ax.plot(x,y, color='green') #specify the region of the bell curve to fill in x_fill = np.arange(-1, 1, 0.001) y_fill = norm.pdf(x_fill,0,1) ax.fill_between(x_fill,y_fill,0, alpha=0.2, color='green') plt.style.use('Solarize_Light2') plt.show()

*You can find the complete style sheet reference guide for matplotlib here.*