Maison >développement back-end >Tutoriel Python >Comment créer des axes X discontinus dans Matplotlib à l'aide de sous-parcelles ?

Comment créer des axes X discontinus dans Matplotlib à l'aide de sous-parcelles ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 01:45:10938parcourir

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

Axes discontinus dans Matplotlib

La création d'un axe X discontinu dans Matplotlib peut améliorer la visibilité des lacunes importantes dans les données. Bien qu'une transformation personnalisée soit une approche efficace, l'utilisation de sous-tracés peut facilement obtenir la discontinuité souhaitée.

Une méthode consiste à utiliser deux sous-tracés, partageant l'alignement de l'axe Y. Zoomez sur différentes parties des données et ajustez les limites de l'axe X pour vous concentrer sur des sections spécifiques. En masquant les épines entre les sous-parcelles et en ajustant l'orientation des graduations, vous pouvez créer la discontinuité.

Pour un effet d'axe brisé plus frappant visuellement, des lignes diagonales peuvent être ajoutées. Spécifiez la taille de la diagonale souhaitée en coordonnées d'axes. Désactivez le découpage et définissez la transformation appropriée pour chaque ligne diagonale afin de vous assurer qu'elle se situe dans le coin correct des axes. En utilisant cette méthode, les lignes diagonales s'ajusteront dynamiquement à mesure que l'espace entre les sous-intrigues change.

Voici un exemple de code qui intègre ces 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()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn