How to plot a graph in python

Python provides a matplotlib library for data visualisation and graphing. Matplotlib,pyplot includes many easy-to-use functions which allow drawing different types of 2-D graphs.

Introduction

Matplotlib is a popular open-source Python package that enables users to design graphs and plots on the given statistics and data. You can use other built-in functions and libraries such as numPy along with the library to plot datasets.

pyplot is a module of matplotlib that provides numerous plotting functions. Each pyplot function creates a figure based on the data provided. plot(), hist(), and bar provide different types of data visualisations. We will discuss each of the functions with an example later. 

Installation of matplotlib

You can download matplotlib from here and install the package manually.

Or you can just write the command in terminal:

pip install matplotlib

After installation, import Matplotlib.pyplot module with a name to use its built-in functions.

pyplot functions for different types of graphs.

A simple plot

Creating a plot is very simple and quick with pyplot.

import matplotlib.pyplot as plt

plt.plot([1,2,3,4,5])

plt.ylabel(‘Equation of a line’)

plt.show()

The code is self-explanatory. We have passed an array in the parameter of the plot function. Then, we gave a label to the y-axis and has displayed it. Notice that the snippet does not define the x axis, but the pyplot will automatically create according to y values.

Line plot

The following lines of code will create a single line graph

import matplotlib.pyplot as plt

# setting x-axis and their corresponding y-axis values

x = [0, 2, 4]

y = [10, 15, 20]

# plotting the points 

plt.plot(x, y)

# setting the label names for the axis

plt.xlabel(‘displacement’)

plt.ylabel(‘time’)

# giving a title to the graph

plt.title(‘Velocity line’)

# showing the figure

plt.show()

Two lines in a plot

You can create multiple lines plot. The following lines of code two lines

import matplotlib.pyplot as plt

# setting x and y axis of the two lines

x1 = [10,20,35]

y1 = [12,14,11]

x2 = [10,20,30]

y2 = [24,21,23]

# plotting the points and naming the lines’

plt.plot(x1, y1, label = “line 1”)

plt.plot(x2, y2, label = “line 2”)

# labeling the x,y axis

plt.xlabel(‘x – axis’)

plt.ylabel(‘y – axis’)

# give title to the graph

plt.title(‘Two lines on the same graph!’)

# show a legend on the plot which will show the names of graph

plt.legend()

# function to show the plot

plt.show()

Bar chart

The example creates a figure of a bar chart on the given dataset.

import matplotlib.pyplot as plt

# x-coordinates of left sides of bars 

l = [1, 2, 3, 4, 5]

# heights of the bars

h = [20, 14, 30, 14, 28]

# labels for bars

lbl = [‘soap’, ‘shampoo’, ‘cream’, ‘cold drinks’, ‘ice-cream’]

# plotting a bar chart

plt.bar(l, h, tick_label = lbl,

        width = 0.5, color = [‘blue’, ‘green’])

# labelling x and y axis

plt.xlabel(‘Items’)

plt.ylabel(‘total sold’)

# plot title

plt.title(‘Week’s sale’)

# function to show the plot

plt.show()

Histogram

A histogram is another type of graph that has multiple axes.

numPy library has many built-in functions which provide support for different arrays and matrix operations. The Python built-in package also has a large collection of high-level mathematical operations for its array.

In the next example, we draw a histogram on the data of a numPy array.

# importing both packages

from matplotlib import pyplot as plt

import numpy as np 

# defining numPy array

heights = np.array([20,75,51,30,16,23,48,40,9,29,69,8,88,76,55])

# sequence of the dataset

bins = [0,20,40,60,80,100]

# range of the plot with min and max values

range = (0,100)

# only first parameter is mandatory, others are optional and we can use to define other properties

plt.hist(heights, bins, range, color = ‘blue’, histtype = ‘bar’, rwidth = 0.7)

plt.title(‘Heights of pine trees’)

plt.show()

Scatter plot

The Python built-in matplotlib library also allows you to create scatter plots. The following lines of code do the task

import matplotlib.pyplot as plt

# x and y axes values

xAxis = [1,2,2,3,4,5,7,9,9,10]

yAxis = [2,3,5,6,7,8,9,4,12,13]

# plotting the points as a scatter plot

plt.scatter(xAxis, yAxis, label= “asterics”, color= “red”, 

            marker= “*”, s=25)

# x-axis label

plt.xlabel(‘length’)

plt.ylabel(‘frequency’)

# plot title

plt.title(‘New Scatter plot’)

# dispay the legend

plt.legend()

# show the scatter plot

plt.show()

Pie chart

import matplotlib.pyplot as plt

# naming labels

expenses = [‘Education’, ‘ration’, ‘bills’, ‘services’]

# portion covered

slices = [5, 4, 2, 6]

# defining colors for the labels

colors = [‘g’, ‘r’, ‘b’, ‘y’]

# plotting the pie chart

plt.pie(slices, labels = expenses, colors=colors,

                        startangle=50, shadow = False,

                        radius = 0.8)

# plotting legend

plt.legend()

# showing the chart

plt.show()

Graph with Pandas library

You can also plot the data frame of the panda using matplotlib.

# importing the libraries

import pandas as pd

import matplotlib.pyplot as plt

# creating dataframe

df = pd.DataFrame({

    ‘Team’: [‘Brazil’, ‘Italy’, ‘Germany’],

    ‘Titles’: [5, 4, 4]

})

# plotting a bar graph

df.plot(x=”Team”, y=”Titles”, kind=”bar”)

plt.show()

matplotlib  has two types of interface

1. MATLAB style

All we have been discussed was Matlab style plotting, in which we focused on a single plot.

2. Object oriented interface

The python library also allows users to design a more sophisticated data visualisation using the OOP concept of objects and reusability.

Fig and axes

Figures are the container that holds plots called axes. A figure can contain multiple axes. Both are part of the matplotlib object-oriented interface.

The subplot is a function of pyplot which enables the user to control and manipulate all the plots created. The function is called with the pyplot instance. See the following example

The syntax is

class_name, object_name = matplotlib.pyplot.subplots(‘no_of_rows’, ‘no_of_columns’)

import matplotlib.pyplot as plt

# defining x and y values

x =[0, 2, 3, 4, 6, 7, 8]

y =[0, 1, 2, 5, 8, 11, 15]

# creating the window with class ‘fig’

# and its ‘axes’ object. The parameters define rows and column

fig, ax = plt.subplots(1, 2)

# plotting graph for 1st column

ax[0].plot(x, y, ‘r–o’)

# plotting graph for second column

ax[1].plot(y, x, ‘b–o’)

# Gives a clean look to the graphs

fig.tight_layout()

plt.show()

Conclusion

Python built-in open-source package matplotlib allows you to create figures and graphs on the given data. The dataset can be simple arrays, numPy arrays or panda data frames. pyplot module contains numerous functions that you can use to plot various scientific and statistical data visualisation.