Python

Matplotlib tutorial (Plotting Graphs Using pyplot)

Matplotlib is a library in python that creates 2D graphs to visualize data. Visualization always helps in better analysis of data and enhance the decision-making abilities of the user. In this matplotlib tutorial, we will plot some graphs and change some properties like fonts, labels, ranges, etc,

First, we will install matplotlib, then we will start plotting some basics graphs. Before that, let’s see some of the graphs that matplotlib can draw.


 

 

Plot Types

There are a number of different plot types in matplotlib. This section briefly explains some plot types in matplotlib.

Line Plot

A line plot is a simple 2D line in the graph.

Contouring and Pseudocolor

We can represent a two-dimensional array in color by using the function pcolormesh() even if the dimensions are unevenly spaced. Similarly, the contour()  function does the same job.

Histograms

To return the bin counts and probabilities in the form of a histogram, we use the function hist().

Paths

To add an arbitrary path in Matplotlib we use matplotlib.path module.

Streamplot

We can use the streamplot() function to plot the streamlines of a vector. We can also map the colors and width of the different parameters such as speed time etc.

Bar Charts

We can use the bar() function to make bar charts with a lot of customizations.

Other Types

Some other examples of plots in Matplotlib include:

  • Ellipses
  • Pie Charts
  • Tables
  • Scatter Plots
  • GUI widgets
  • Filled curves
  • Date handling
  • Log plots
  • Legends
  • TeX- Notations for text objects
  • Native TeX rendering
  • EEG GUI
  • XKCD-style sketch plots

 


Installation

Assuming that the path of Python is set in environment variables, you just need to use the pip command to install matplotlib package to get started.

Use the following command:


Install matplotlib

In my system, the package is already installed. If the package isn’t already there, it will be downloaded and installed.

To import the package into your Python file, use the following statement:


Where matplotlib is the library, pyplot is a package that includes all MATLAB functions to use MATLAB functions in Python.

Finally, we can use plt to call functions within the python file.


Vertical Line

To plot a vertical line with pyplot, you can use the axvline() function.

The syntax of axvline is as follows:


In this syntax: x is the coordinate for x axis. This point is from where the line would be generated vertically. ymin is the bottom of the plot, ymax is the top of the plot. **kwargs are the properties of the line such as color, label, line style, etc.


In this example, we draw a vertical line. 0.2 means the line will be drawn at point 0.2 on the graph. 0 and 1 are ymin and ymax respectively.

label one of the line properties. legend() is the MATLAB function which enables label on the plot. Finally, show() will open the plot or graph screen.

Draw Vertical Line


Horizontal Line

The axhline() plots a horizontal line along. The syntax to axhline() is as follows:


In the syntax: y is the coordinates along y axis. These points are from where the line would be generated horizontally. xmin is the left of the plot, xmax is the right of the plot. **kwargs are the properties of the line such as color, label, line style, etc.

Replacing axvline() with axhline() in the previous example and you will have a horizontal line on the plot:


Draw Horizontal Line

 

Multiple Lines

To plot multiple vertical lines, we can create an array of x points/coordinates, then iterate through each element of array to plot more than one line:


The output will be:

Draw Multiple Lines

The above output doesn’t look really attractive, we can use different colors for each line as well in the graph.

Consider the example below:


In this example, we have an array of lines and an array of Python color symbols. Using the zip() function, both arrays are merged together: the first element of xpoints[] with the first element of the color[] array. This way, first line = green, second line = cyan, etc.

The braces {} act as a place holder to add Python variables to printing with the help of the format() function. Therefore, we have xpoints[] in the plot.

The output of the above code:

Draw Multiple Lines with different colors

Just replace the axvline() with axhline() in the previous example and you will have horizontal multiple lines on the plot:


The code is the same, we have an array of four points of y axis and different colors this time. Both arrays are merged together with zip() function, iterated through the final array and axhline() plots the lines as shown in the output below:

Draw multiple horizontal lines


Save Figure

After plotting your graph, how to save the output plot?

To save the plot, use savefig() of pyplot.


Where fname is the name of the file. The destination or path can also be specified along with the name of the file. The kwargs parameter is optional. It’s used to change the orientation, format, facecolor, quality, dpi, etc.


The name of the file is horizontal_lines.png, the file is saved where your python file is stored:

Export figure to image

 

Multiple Plots

All of the previous examples were about plotting in one plot. What about plotting multiple plots in the same figure?

You can generate multiple plots in the same figure with the help of the subplot() function of Python pyplot.


In arguments, we have three integers to specify, the number of plots in a row and in a column, then at which index the plot should be. You can consider it as a grid and we are drawing on its cells.

The first number would be nrows the number of rows, the second would be ncols the number of columns and then the index. Other optional arguments (**kwargs) include, color, label, title, snap, etc.

Consider the following code to get a better understanding of how to plot more than one graph in one figure.


The first thing is to define the location of the plot. In the first subplot, 1, 2, 1 states that we have 1 row, 2 columns and the current plot is going to be plotted at index 1. Similarly, 1, 2, 2 tells that we have 1 row, 2 columns but this time the plot at index 2.

The next step is to create arrays to plot integer points in the graph. Check out the output below:

Draw Multiple Plots

This is how vertical subplots are drawn. To plot horizontal graphs, change the subplot rows and columns values as:


This means we have 2 rows and 1 column. The output will be like this:

Draw horizontal plots

Now let’s create a 2×2 grid of plots.

Consider the code below:


The output is going to be:

Draw multiple horizontal plots

In this example, 2,2,1 means 2 rows, 2 columns, and the plot will be at index 1. Similarly, 2,2,2 means 2 rows, 2 columns, and the plot will be at index 2 of the grid.


Font Size

We can change the font size of a plot with the help of a function called rc(). The rc() function is used to customize the rc settings. To use rc() to change font size, use the syntax below:


Or


The font in the syntax above is a user-defined dictionary, that specifies the weight, font family, font size, etc. of the text.


This will change the font to 30, the output is going to be:

Change font size

Axis Range

The range or limit of the x and y axis can be set by using the xlim() and ylim() functions of pyplot respectively.


Consider the example below to set x axis limit for the plot:


In this example, the points in the x axis will start from 0 till 160 like this:

Limit x-axis

Similarly, to limit y axis coordinates, you will put the following line of code:


The output will be:

Limit y-axis

Label Axis

The labels for x and y axis can be created using the xlabel() and ylabel() functions of pyplot.


In the above syntax, labeltext is the text of the label and is a string, labelfont describes the font size, weight, family of the label text and it’s optional.


In the above example, we have regular x and y arrays for x and y coordinates respectively. Then plt.xlabel() generates a text for x axis and plt.ylabel() generates a text for y axis.

Change axis label

 

Clear Plot

The clf() function of the pyplot clears the plot.


In the clf() function, we don’t have any arguments.


In this code, we created a plot and defined labels as well. After that we have used the clf() function to clear the plot as follows:

Clear plot

I hope you find the tutorial useful to start with matplotlib.

Keep coming back.

Mokhtar Ebrahim
I'm working as a Linux system administrator since 2010. I'm responsible for maintaining, securing, and troubleshooting Linux servers for multiple clients around the world. I love writing shell and Python scripts to automate my work.

Leave a Reply

Your email address will not be published. Required fields are marked *