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()
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!