Maison >développement back-end >Tutoriel Python >Comment créer des axes discontinus dans Matplotlib ?
Création d'axes discontinus dans Matplotlib
Introduction :
Lors de la création de tracés à l'aide de Matplotlib, un L’axe X continu est généralement utilisé. Cependant, il peut y avoir des cas où un axe discontinu est souhaité, où un écart ou un saut se produit dans les valeurs de l'axe x. Cela peut être utile pour afficher des données avec des valeurs manquantes ou peu distribuées.
Utilisation de sous-tracés :
Une approche pour créer un axe discontinu consiste à utiliser des sous-tracés. Chaque sous-tracé peut se voir attribuer une plage différente de valeurs de l'axe X, ce qui entraîne un écart entre les sous-tracés. Voici un exemple simple :
import matplotlib.pyplot as plt x1 = np.linspace(0, 5, 100) y1 = np.sin(x1) x2 = np.linspace(10, 15, 100) y2 = np.cos(x2) plt.subplot(1, 2, 1) plt.plot(x1, y1) plt.subplot(1, 2, 2) plt.plot(x2, y2) plt.show()
Transformation d'axe personnalisé :
Une autre méthode pour créer un axe discontinu consiste à utiliser une transformation d'axe personnalisée. En définissant une nouvelle classe de transformation, nous pouvons spécifier comment les données sont mappées sur l'axe. Le code suivant illustre cette approche :
import matplotlib.pyplot as plt from matplotlib.transforms import Transform from matplotlib.ticker import LogLocator class DiscontinuousTransform(Transform): def __init__(self, breaks): Transform.__init__(self) self.breaks = breaks def transform(self, values): new_values = values.copy() for break in self.breaks: new_values[values > break] += 1 return new_values def inverted(self): return InvertedDiscontinuousTransform(self.breaks) class InvertedDiscontinuousTransform(Transform): def __init__(self, breaks): Transform.__init__(self) self.breaks = breaks def transform(self, values): new_values = values.copy() for break in self.breaks: new_values[values >= break] -= 1 return new_values def inverted(self): return DiscontinuousTransform(self.breaks) x = np.linspace(0, 10, 100) y = np.sin(x) trans = DiscontinuousTransform([5]) locator = LogLocator(base=10) locator.set_params(minor_locator=None) plt.plot(x, y, transform=trans) plt.gca().xaxis.set_major_locator(locator) plt.gca().xaxis.set_major_formatter(plt.FormatStrFormatter("%0.0f\n(pert)")) plt.show()
Conclusion :
La création d'un axe discontinu dans Matplotlib peut être réalisée à l'aide de sous-tracés ou de transformations d'axe personnalisées. L'approche de transformation personnalisée offre plus de flexibilité et de contrôle sur le comportement de l'axe. Les deux méthodes peuvent être efficaces pour visualiser des données présentant des lacunes ou des discontinuités.
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!