Matplotlib Figure and Axes Enter/Leave Events

PythonPythonBeginner
Practice Now

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

Introduction

Matplotlib is a data visualization library for Python. It offers a variety of tools for creating static, animated, and interactive visualizations in Python. One of the interactive features of Matplotlib is the ability to detect when the mouse enters and leaves a figure or an axes. In this lab, we will learn how to use Matplotlib's Figure and Axes enter/leave events to change the frame colors of the figure and axes.

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/AdvancedTopicsGroup(["`Advanced Topics`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) 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/AdvancedTopicsGroup -.-> matplotlib/event_handling("`Event Handling`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/FunctionsGroup -.-> python/function_definition("`Function Definition`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} matplotlib/figures_axes -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} matplotlib/event_handling -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} python/tuples -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} python/function_definition -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} python/importing_modules -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} python/data_visualization -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} python/build_in_functions -.-> lab-48730{{"`Matplotlib Figure and Axes Enter/Leave Events`"}} end

Importing Matplotlib

Before we start using Matplotlib, we need to import it. We will also import the pyplot module, which provides a simple interface for creating plots.

import matplotlib.pyplot as plt

Creating the Figure and Axes

We will create a figure with two subplots (axes) using the subplots function. We will also set the title of the figure.

fig, axs = plt.subplots(2, 1)
fig.suptitle('Mouse Hover Over Figure or Axes to Trigger Events')

Defining the Event Handlers

We will now define four event handler functions: on_enter_axes, on_leave_axes, on_enter_figure, and on_leave_figure. These functions will be called when the mouse enters or leaves an axes or the figure.

def on_enter_axes(event):
    print('enter_axes', event.inaxes)
    event.inaxes.patch.set_facecolor('yellow')
    event.canvas.draw()

def on_leave_axes(event):
    print('leave_axes', event.inaxes)
    event.inaxes.patch.set_facecolor('white')
    event.canvas.draw()

def on_enter_figure(event):
    print('enter_figure', event.canvas.figure)
    event.canvas.figure.patch.set_facecolor('red')
    event.canvas.draw()

def on_leave_figure(event):
    print('leave_figure', event.canvas.figure)
    event.canvas.figure.patch.set_facecolor('grey')
    event.canvas.draw()

Connecting the Event Handlers to the Figure Canvas

We will now connect the event handlers to the figure canvas using the mpl_connect method. This will allow the event handlers to be triggered when the mouse enters or leaves the figure or axes.

fig.canvas.mpl_connect('figure_enter_event', on_enter_figure)
fig.canvas.mpl_connect('figure_leave_event', on_leave_figure)
fig.canvas.mpl_connect('axes_enter_event', on_enter_axes)
fig.canvas.mpl_connect('axes_leave_event', on_leave_axes)

Displaying the Figure

We will now display the figure using the show function.

plt.show()

Summary

In this lab, we learned how to use Matplotlib's Figure and Axes enter/leave events to change the frame colors of the figure and axes. We created a figure with two subplots, defined event handler functions for entering and leaving the figure and axes, connected the event handlers to the figure canvas, and displayed the figure.

Other Python Tutorials you may like