# How to Plot a Normal Distribution in Python

Visualizing a Normal Distribution, also known as a Gaussian distribution, is a common task in statistics and data analysis. A Normal Distribution is a probability distribution characterized by its bell shape, which is symmetric about the mean. It’s defined by two parameters: the mean (mu) which determines the center of the distribution, and the standard deviation (sigma) which determines the width of the distribution.

Python, with the help of libraries like Matplotlib and Scipy, provides an effective environment for creating plots and visualizations including the Normal Distribution. In this guide, we will go through the steps needed to plot a Normal Distribution in Python.

### Install Necessary Libraries

Before starting, you need to install the necessary libraries, Matplotlib and Scipy. If they’re not already installed, you can do this using pip:

pip install matplotlib scipy

### Import Necessary Libraries

The first step in Python is to import the necessary libraries. For this task, we need Matplotlib and Scipy:

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

### Define the Parameters of the Normal Distribution

You need to define the mean and standard deviation for your normal distribution. The mean determines the center of the distribution, while the standard deviation determines the width of the distribution.

For example, we can define a normal distribution with a mean of 0 and a standard deviation of 1:

mu = 0
sigma = 1

### Generate the Values for the x-axis

We can use the numpy function linspace to generate an array of values for the x-axis that spans our desired range. We’ll generate values from -3sigma to 3sigma, which will capture the significant part of the distribution:

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)

### Generate the Values for the y-axis

We can use the scipy.stats.norm function pdf to generate the probability density function for the y-axis. The pdf function calculates the value of the probability density function at each point of the x-axis:

y = norm.pdf(x, mu, sigma)

### Create the Plot

Now we can create the plot using Matplotlib. We’ll use the plot function to create a line plot of the normal distribution:

plt.plot(x, y)

### Customize the Plot

To improve the readability of the plot, we can add a title and labels for the x and y axes:

plt.title('Normal Distribution')
plt.xlabel('x')
plt.ylabel('pdf(x)')

### Display the Plot

Finally, we use plt.show() to display the plot:

plt.show()

Here’s the full Python script:

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

# define mean and standard deviation
mu = 0
sigma = 1

# generate x values
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)

# generate y values
y = norm.pdf(x, mu, sigma)

# create the plot
plt.plot(x, y)

# customize the plot
plt.title('Normal Distribution')
plt.xlabel('x')
plt.ylabel('pdf(x)')

# display the plot
plt.show()

When you run the above script, you’ll get a plot of a Normal Distribution.

This guide provides a basic method to plot a Normal Distribution using Python. In actual data analysis, the mean and standard deviation would be based on the data’s characteristics, and you might also overlay the normal distribution plot with a histogram of your data to visualize how well it fits a normal distribution.