Home > Backend Development > Python Tutorial > How to Create Discontinuous X-Axes in Matplotlib Using Subplots?

How to Create Discontinuous X-Axes in Matplotlib Using Subplots?

Barbara Streisand
Release: 2024-12-18 01:45:10
Original
823 people have browsed it

How to Create Discontinuous X-Axes in Matplotlib Using Subplots?

Discontinuous Axes in Matplotlib

Creating a discontinuous x-axis in Matplotlib can enhance the visibility of significant gaps in data. While a custom transform is an efficient approach, utilizing subplots can achieve the desired discontinuity with ease.

One method involves using two subplots, sharing the y-axis alignment. Zoom into different portions of the data and adjust the x-axis limits to focus on specific sections. By hiding the spines between the subplots and adjusting tick orientations, you can create the discontinuity.

For a more visually striking broken axis effect, diagonal lines can be added. Specify the desired diagonal size in axes coordinates. Disable clipping and set the appropriate transform for each diagonal line to ensure it falls within the correct corner of the axes. By utilizing this method, the diagonal lines will adjust dynamically as the space between the subplots changes.

Here is an example code that incorporates these techniques:

import matplotlib.pyplot as plt
import numpy as np

# Generate sample data
x = np.r_[0:1:0.1, 9:10:0.1]
y = np.sin(x)

# Create subplots and set x-axis limits
fig, (ax, ax2) = plt.subplots(1, 2, sharey=True)
ax.set_xlim(0, 1)
ax2.set_xlim(9, 10)

# Plot data and hide spines
ax.plot(x, y, 'bo')
ax2.plot(x, y, 'bo')
ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax.tick_params(labeltop='off')
ax2.yaxis.tick_right()

# Adjust spacing and add diagonal lines
plt.subplots_adjust(wspace=0.15)

# Define diagonal line parameters
d = .015
kwargs = dict(transform=ax.transAxes, color='k', clip_on=False)
ax.plot((1 - d, 1 + d), (-d, +d), **kwargs)
ax.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)
kwargs.update(transform=ax2.transAxes)
ax2.plot((-d, d), (-d, +d), **kwargs)
ax2.plot((-d, d), (1 - d, 1 + d), **kwargs)

plt.show()
Copy after login

The above is the detailed content of How to Create Discontinuous X-Axes in Matplotlib Using Subplots?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template