Creating a Line Plot With Dual Axes

MatplotlibMatplotlibBeginner
Practice Now

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

Introduction

In this lab, we will learn how to create a line plot with dual axes using Matplotlib library in Python. We will plot two sets of data with different scales on the same graph. This is useful when we want to compare two related variables that have different units of measurement.

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 matplotlib(("`Matplotlib`")) -.-> matplotlib/BasicConceptsGroup(["`Basic Concepts`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/PlottingDataGroup(["`Plotting Data`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/AdvancedPlottingGroup(["`Advanced Plotting`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/PlotCustomizationGroup(["`Plot Customization`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) 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/secondary_axis("`Secondary Axis`") matplotlib/PlotCustomizationGroup -.-> matplotlib/titles_labels("`Adding Titles and Labels`") matplotlib/PlotCustomizationGroup -.-> matplotlib/legend_config("`Legend Configuration`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/ModulesandPackagesGroup -.-> python/using_packages("`Using Packages`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} matplotlib/figures_axes -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} matplotlib/line_plots -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} matplotlib/secondary_axis -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} matplotlib/titles_labels -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} matplotlib/legend_config -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} python/lists -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} python/tuples -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} python/importing_modules -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} python/using_packages -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} python/data_visualization -.-> lab-48850{{"`Creating a Line Plot With Dual Axes`"}} end

Importing Libraries

We will start by importing the necessary libraries. We will need matplotlib.pyplot for creating the graph and mpl_toolkits.axes_grid1 for creating the dual axes.

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot

Creating the Plot

Next, we will create the plot by defining the host axis and the parasite axis. The host axis will be used for the primary data and the parasite axis will be used for the secondary data.

host = host_subplot(111)
par = host.twinx()

Setting Labels

We will set the labels for both axes and the title for the plot.

host.set_xlabel("Distance")
host.set_ylabel("Density")
par.set_ylabel("Temperature")
plt.title("Density and Temperature vs Distance")

Adding Data

We will add the data to the plot by using the plot function. We will assign each line to a variable so that we can reference it later.

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par.plot([0, 1, 2], [0, 3, 2], label="Temperature")

Formatting the Plot

We will format the plot by setting the legend, label colors, and line colors.

host.legend()
host.yaxis.get_label().set_color(p1.get_color())
par.yaxis.get_label().set_color(p2.get_color())

Displaying the Plot

Finally, we will display the plot using the show function.

plt.show()

Summary

In this lab, we learned how to create a line plot with dual axes using Matplotlib library in Python. We used the host_subplot and twinx functions to create the dual axes and added data using the plot function. We formatted the plot by setting the legend, label colors, and line colors. The resulting graph allows us to compare two related variables that have different units of measurement.