Scroll backwards and forwards through Matplotlib plots

To scroll backward and forwards through Matplotlib plots using left and right arrow keys, we can bind a key press event to dynamically update the plot data. This technique is useful for creating interactive visualizations where users can navigate through different views of data.

Steps to Create Scrollable Plots

  • Set up the figure size and padding configuration
  • Create initial data points using NumPy
  • Define a key event handler function to respond to arrow keys
  • Bind the key press event to the figure
  • Add a subplot and plot the initial data
  • Use show() to display the interactive plot

Complete Example

Here's how to create a scrollable sine wave plot ?

import numpy as np
import matplotlib.pyplot as plt

# Configure figure settings
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# Create initial data
curr_pos = np.linspace(-10, 10, 100)
y = np.sin(curr_pos)

def key_event(e):
    global curr_pos
    # Move plot left or right based on arrow key
    if e.key == "right":
        curr_pos = curr_pos + 1
    elif e.key == "left":
        curr_pos = curr_pos - 1
    
    # Clear and redraw the plot
    ax.cla()
    ax.plot(curr_pos, np.sin(curr_pos))
    ax.set_title("Use Left/Right Arrow Keys to Scroll")
    fig.canvas.draw()

# Create figure and bind key event
fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', key_event)

# Add subplot and initial plot
ax = fig.add_subplot(111)
ax.plot(curr_pos, y)
ax.set_title("Use Left/Right Arrow Keys to Scroll")

plt.show()

How It Works

The key_event() function responds to keyboard input. When the right arrow is pressed, it shifts the x-axis values by adding 1. When the left arrow is pressed, it subtracts 1. The ax.cla() method clears the current plot, and fig.canvas.draw() refreshes the display with new data.

Key Features

  • Interactive Navigation: Users can scroll through different portions of the sine wave
  • Real-time Updates: The plot updates immediately when arrow keys are pressed
  • Smooth Scrolling: Each key press shifts the view by one unit
  • Global Variables: The curr_pos variable maintains the current position state

Customization Options

You can modify the scrolling behavior by changing the increment value or adding other key bindings ?

def key_event(e):
    global curr_pos
    if e.key == "right":
        curr_pos = curr_pos + 0.5  # Smaller steps
    elif e.key == "left":
        curr_pos = curr_pos - 0.5
    elif e.key == "up":
        curr_pos = curr_pos + 5    # Larger jumps
    elif e.key == "down":
        curr_pos = curr_pos - 5

Conclusion

Interactive scrolling in Matplotlib is achieved by binding key press events to update plot data dynamically. This approach enables users to navigate through different views of data using arrow keys, creating engaging and interactive visualizations.

Updated on: 2026-03-25T23:13:10+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements