Matplotlib Data Visualization

PythonPythonBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

This lab is designed to introduce you to the basics of data visualization using Matplotlib. Matplotlib is a popular data visualization library for Python that provides a wide range of options for creating plots, graphs, and charts.

VM Tips

After the VM startup is done, click the top left corner to switch to the Notebook tab to access Jupyter Notebook for practice.

Sometimes, you may need to wait a few seconds for Jupyter Notebook to finish loading. The validation of operations cannot be automated because of limitations in Jupyter Notebook.

If you face issues during learning, feel free to ask Labby. Provide feedback after the session, and we will promptly resolve the problem for you.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("`Python`")) -.-> python/BasicConceptsGroup(["`Basic Concepts`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) python(("`Python`")) -.-> python/FileHandlingGroup(["`File Handling`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/BasicConceptsGroup(["`Basic Concepts`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/PlottingDataGroup(["`Plotting Data`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/AdvancedPlottingGroup(["`Advanced Plotting`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/AdvancedTopicsGroup(["`Advanced Topics`"]) python(("`Python`")) -.-> python/ControlFlowGroup(["`Control Flow`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/PythonStandardLibraryGroup(["`Python Standard Library`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) python/BasicConceptsGroup -.-> python/comments("`Comments`") python/FunctionsGroup -.-> python/keyword_arguments("`Keyword Arguments`") python/FileHandlingGroup -.-> python/with_statement("`Using with Statement`") matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("`Importing Matplotlib`") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("`Understanding Figures and Axes`") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("`Line Plots`") matplotlib/AdvancedPlottingGroup -.-> matplotlib/subplots("`Subplots`") matplotlib/AdvancedTopicsGroup -.-> matplotlib/animation_creation("`Animation Creation`") python/BasicConceptsGroup -.-> python/booleans("`Booleans`") python/ControlFlowGroup -.-> python/for_loops("`For Loops`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/FunctionsGroup -.-> python/function_definition("`Function Definition`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/ModulesandPackagesGroup -.-> python/standard_libraries("`Common Standard Libraries`") python/PythonStandardLibraryGroup -.-> python/math_random("`Math and Random`") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("`Numerical Computing`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills python/comments -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/keyword_arguments -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/with_statement -.-> lab-49015{{"`Matplotlib Data Visualization`"}} matplotlib/importing_matplotlib -.-> lab-49015{{"`Matplotlib Data Visualization`"}} matplotlib/figures_axes -.-> lab-49015{{"`Matplotlib Data Visualization`"}} matplotlib/line_plots -.-> lab-49015{{"`Matplotlib Data Visualization`"}} matplotlib/subplots -.-> lab-49015{{"`Matplotlib Data Visualization`"}} matplotlib/animation_creation -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/booleans -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/for_loops -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/lists -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/tuples -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/function_definition -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/importing_modules -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/standard_libraries -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/math_random -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/numerical_computing -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/data_visualization -.-> lab-49015{{"`Matplotlib Data Visualization`"}} python/build_in_functions -.-> lab-49015{{"`Matplotlib Data Visualization`"}} end

Setting Up

Before we start, we need to ensure that Matplotlib is installed. You can install it using pip, by running the following command:

!pip install matplotlib

Once installed, we need to import the library and set up the environment:

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

## Create new Figure with black background
fig = plt.figure(figsize=(8, 8), facecolor='black')

## Add a subplot with no frame
ax = plt.subplot(frameon=False)

Generating Random Data

In this step, we will generate random data that we will use to create our plot.

## Generate random data
data = np.random.uniform(0, 1, (64, 75))
X = np.linspace(-1, 1, data.shape[-1])
G = 1.5 * np.exp(-4 * X ** 2)

Creating Line Plots

We will create line plots using the random data that we generated in the previous step.

## Generate line plots
lines = []
for i in range(len(data)):
    ## Small reduction of the X extents to get a cheap perspective effect
    xscale = 1 - i / 200.
    ## Same for linewidth (thicker strokes on bottom)
    lw = 1.5 - i / 100.0
    line, = ax.plot(xscale * X, i + G * data[i], color="w", lw=lw)
    lines.append(line)

Setting Limits and Removing Ticks

In this step, we will set the y limit and remove the ticks from the plot.

## Set y limit (or first line is cropped because of thickness)
ax.set_ylim(-1, 70)

## No ticks
ax.set_xticks([])
ax.set_yticks([])

Adding Title

We will add a title to our plot.

## 2 part titles to get different font weights
ax.text(0.5, 1.0, "MATPLOTLIB ", transform=ax.transAxes,
        ha="right", va="bottom", color="w",
        family="sans-serif", fontweight="light", fontsize=16)
ax.text(0.5, 1.0, "UNCHAINED", transform=ax.transAxes,
        ha="left", va="bottom", color="w",
        family="sans-serif", fontweight="bold", fontsize=16)

Animating the Plot

We will now animate the plot by shifting the data to the right and filling in new values.

def update(*args):
    ## Shift all data to the right
    data[:, 1:] = data[:, :-1]

    ## Fill-in new values
    data[:, 0] = np.random.uniform(0, 1, len(data))

    ## Update data
    for i in range(len(data)):
        lines[i].set_ydata(i + G * data[i])

    ## Return modified artists
    return lines

## Construct the animation, using the update function as the animation director.
anim = animation.FuncAnimation(fig, update, interval=10, save_count=100)
plt.show()

Summary

In this lab, we learned the basics of data visualization using Matplotlib. We generated random data, created line plots, set limits and removed ticks, added a title, and animated the plot. These are just the basics, and Matplotlib provides many more options for customizing and enhancing your visualizations.

Other Python Tutorials you may like