What are different types of graph in Matplotlib library in Python (with code)?

Creating different types of graph

1. Line graph

The line graph is one of charts which shows information as a series of the line. The graph is plotted by the plot() function. The line graph is simple to plot; let’s consider the following example:

from matplotlib import pyplot as plt  
  
x = [4,8,9]  
y = [10,12,15]  
  
plt.plot(x,y)  
  
plt.title("Line graph")  
plt.ylabel('Y axis')  
plt.xlabel('X axis')  
plt.show()  

Output:

Creating different types of graph

We can customize the graph by importing the style module. The style module will be built into a matplotlib installation. It contains the various functions to make the plot more attractive. In the below program, we are using the style module:

from matplotlib import pyplot as plt  
from matplotlib import style  
  
style.use('ggplot')  
x = [16, 8, 10]  
y = [8, 16, 6]  
x2 = [8, 15, 11]  
y2 = [6, 15, 7]  
plt.plot(x, y, 'r', label='line one', linewidth=5)  
plt.plot(x2, y2, 'm', label='line two', linewidth=5)  
plt.title('Epic Info')  
fig = plt.figure()  
plt.ylabel('Y axis')  
plt.xlabel('X axis')  
plt.legend()  
plt.grid(True, color='k')  
plt.show()  

Output:

Creating different types of graph

In Matplotlib, the figure (an instance of class plt.Figure) can be supposed of as a single container that consists of all the objects denoting axes, graphics, text, and labels.

Example-3

import numpy as np  
import matplotlib.pyplot as plt  
  
fig = plt.figure()  
ax = plt.axes()  
  
x = np.linspace(0, 10, 1000)  
ax.plot(x, np.sin(x))  

Output:

Creating different types of graph

The matplotlib provides the fill_between() function which is used to fill area around the lines based on the user defined logic.

Example-4

import numpy as np  
import matplotlib.pyplot as plt  
  
fig = plt.figure()  
ax = plt.axes()  
  
x = np.linspace(0, 10, 1000)  
ax.plot(x, np.sin(x))  
  
  
import matplotlib.pyplot as plt  
import numpy as np  
  
x = np.arange(0.0, 2, 0.01)  
y1 = np.sin(2 * np.pi * x)  
y2 = 1.2 * np.sin(4 * np.pi * x)  
fig, ax = plt.subplots(1, sharex=True)  
ax.plot(x, y1, x, y2, color='black')  
ax.fill_between(x, y1, y2, where=y2 >= y1, facecolor='blue', interpolate=True)  
ax.fill_between(x, y1, y2, where=y2 <= y1, facecolor='red', interpolate=True)  
ax.set_title('fill between where')  

Output:

Creating different types of graph

2. Bar graphs

Bar graphs are one of the most common types of graphs and are used to show data associated with the categorical variables. Matplotlib provides a bar() to make bar graphs which accepts arguments such as: categorical variables, their value and color.

from matplotlib import pyplot as plt  
players = ['Virat','Rohit','Shikhar','Hardik']  
runs = [51,87,45,67]  
plt.bar(players,runs,color = 'green')  
plt.title('Score Card')  
plt.xlabel('Players')  
plt.ylabel('Runs')  
plt.show()  

Output:

Creating different types of graph

Another function barh() is used to make horizontal bar graphs. It accepts xerr or yerr as arguments (in case of vertical graphs) to depict the variance in our data as follows:

from matplotlib import pyplot as plt  
players = ['Virat','Rohit','Shikhar','Hardik']  
runs = [51,87,45,67]  
plt.barh(players,runs, color = 'green')  
plt.title('Score Card')  
plt.xlabel('Players')  
plt.ylabel('Runs')  
plt.show()  

Output:

Creating different types of graph

Let’s have a look on the other example using the style() function:

from matplotlib import pyplot as plt  
from matplotlib import style  
  
style.use('ggplot')  
  
x = [5,8,10]  
y = [12,16,6]  
  
x2 = [6,9,11]  
y2 = [7,15,7]  
  
  
plt.bar(x, y, color = 'y', align='center')  
plt.bar(x2, y2, color='c', align='center')  
  
plt.title('Information')  
  
plt.ylabel('Y axis')  
plt.xlabel('X axis')  

Output:

Creating different types of graph

Similarly to vertical stack, the bar graph together by using the bottom argument and define the bar graph, which we want to stack below and its value.

from matplotlib import pyplot as plt  
import numpy as np  
  
countries = ['USA', 'India', 'China', 'Russia', 'Germany']  
bronzes = np.array([38, 17, 26, 19, 15])  
silvers = np.array([37, 23, 18, 18, 10])  
golds = np.array([46, 27, 26, 19, 17])  
ind = [x for x, _ in enumerate(countries)]  
  
plt.bar(ind, golds, width=0.5, label='golds', color='gold', bottom=silvers+bronzes)  
plt.bar(ind, silvers, width=0.5, label='silvers', color='silver', bottom=bronzes)  
plt.bar(ind, bronzes, width=0.5, label='bronzes', color='#CD853F')  
  
plt.xticks(ind, countries)  
plt.ylabel("Medals")  
plt.xlabel("Countries")  
plt.legend(loc="upper right")  
plt.title("2019 Olympics Top Scorers")  

Output:

Creating different types of graph

3. Pie Chart

A pie chart is a circular graph that is broken down in the segment or slices of pie. It is generally used to represent the percentage or proportional data where each slice of pie represents a particular category. Let’s have a look at the below example:

from matplotlib import pyplot as plt  
  
# Pie chart, where the slices will be ordered and plotted counter-clockwise:  
Players = 'Rohit', 'Virat', 'Shikhar', 'Yuvraj'  
Runs = [45, 30, 15, 10]  
explode = (0.1, 0, 0, 0)  # it "explode" the 1st slice   
  
fig1, ax1 = plt.subplots()  
ax1.pie(Runs, explode=explode, labels=Players, autopct='%1.1f%%',  
        shadow=True, startangle=90)  
ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.  
  
plt.show()  

Output:

Creating different types of graph

4. Histogram

First, we need to understand the difference between the bar graph and histogram. A histogram is used for the distribution, whereas a bar chart is used to compare different entities. A histogram is a type of bar plot that shows the frequency of a number of values compared to a set of values ranges.

For example we take the data of the different age group of the people and plot a histogram with respect to the bin. Now, bin represents the range of values that are divided into series of intervals. Bins are generally created of the same size.

from matplotlib import pyplot as plt  
from matplotlib import pyplot as plt  
population_age = [21,53,60,49,25,27,30,42,40,1,2,102,95,8,15,105,70,65,55,70,75,60,52,44,43,42,45]  
bins = [0,10,20,30,40,50,60,70,80,90,100]  
plt.hist(population_age, bins, histtype='bar', rwidth=0.8)  
plt.xlabel('age groups')  
plt.ylabel('Number of people')  
plt.title('Histogram')  
plt.show()  

Output:

Creating different types of graph

Let’s consider the another example of plotting histogram:

from matplotlib import pyplot as plt  
# Importing Numpy Library  
import numpy as np  
plt.style.use('fivethirtyeight')  
  
mu = 50  
sigma = 7  
x = np.random.normal(mu, sigma, size=200)  
fig, ax = plt.subplots()  
  
ax.hist(x, 20)  
ax.set_title('Historgram')  
ax.set_xlabel('bin range')  
ax.set_ylabel('frequency')  
  
fig.tight_layout()  
plt.show()  

Output:

Creating different types of graph

5. Scatter plot

The scatter plots are mostly used for comparing variables when we need to define how much one variable is affected by another variable. The data is displayed as a collection of points. Each point has the value of one variable, which defines the position on the horizontal axes, and the value of other variable represents the position on the vertical axis.

Let’s consider the following simple example:

Example-1:

from matplotlib import pyplot as plt  
from matplotlib import style  
style.use('ggplot')  
  
x = [5,7,10]  
y = [18,10,6]  
  
x2 = [6,9,11]  
y2 = [7,14,17]  
  
plt.scatter(x, y)  
  
plt.scatter(x2, y2, color='g')  
  
plt.title('Epic Info')  
plt.ylabel('Y axis')  
plt.xlabel('X axis')  
  
plt.show()  

Output:

Creating different types of graph

Example-2

import matplotlib.pyplot as plt  
x = [2, 2.5, 3, 3.5, 4.5, 4.7, 5.0]  
y = [7.5, 8, 8.5, 9, 9.5, 10, 10.5]  
  
x1 = [9, 8.5, 9, 9.5, 10, 10.5, 12]  
y1 = [3, 3.5, 4.7, 4, 4.5, 5, 5.2]  
plt.scatter(x, y, label='high income low saving', color='g')  
plt.scatter(x1, y1, label='low income high savings', color='r')  
plt.xlabel('saving*100')  
plt.ylabel('income*1000')  
plt.title('Scatter Plot')  
plt.legend()  
plt.show()  

Output:

Creating different types of graph

6. 3D graph plot

Matplotlib was initially developed with only two-dimension plot. Its 1.0 release was built with some of three-dimensional plotting utilities on top of two-dimension display, and the result is a convenient set of tools for 3D data visualization.

Three-dimension plots can be created by importing the mplot3d toolkit, include with the main Matplotlib installation:

from mpl_toolkits import mplot3d

When this module is imported in the program, three-dimension axes can be created by passing the keyword projection=‘3d’ to any of the normal axes creation routines:

Let’s see the simple 3D plot

Example-1:

from mpltoolkits import mplot3d  
import numpy as np  
import matplotlib.pyplot as plt  
fig = plt.figure()  
ax = plt.axes(projection='3d')_  

Output:

Creating different types of graph

Example-2:

from mpl_toolkits import mplot3d  
import numpy as np  
import matplotlib.pyplot as plt  
  
height = np.array([100,110,87,85,65,80,96,75,42,59,54,63,95,71,86])  
weight = np.array([105,123,84,85,78,95,69,42,87,91,63,83,75,41,80])  
  
  
scatter(height,weight)  
  
fig = plt.figure()  
ax = plt.axes(projection='3d')  
# This is used to plot 3D scatter  
ax.scatter3D(height,weight)  
plt.title("3D Scatter Plot")  
plt.xlabel("Height")  
plt.ylabel("Weight")  
plt.title("3D Scatter Plot")  
plt.xlabel("Height")  
plt.ylabel("Weight")  
  
plt.show()  

Output:

Creating different types of graph

Note: We can use the plot3D () to plot simple 3D line graph.

Example-3

import matplotlib as mpl  
from mpl_toolkits.mplot3d import Axes3D  
import numpy as np  
import matplotlib.pyplot as plt  
  
mpl.rcParams['legend.fontsize'] = 10  
  
fig = plt.figure()  
ax = fig.gca(projection='3d')  
theta1 = np.linspace(-4 * np.pi, 4 * np.pi, 100)  
z = np.linspace(-2, 2, 100)  
r = z**2 + 1  
x = r * np.sin(theta1)  
y = r * np.cos(theta1)  
ax.plot3D(x, y, z, label='parametric curve', color = 'red')  
ax.legend()  
  
plt.show()  

Output:

Creating different types of graph