Maison >développement back-end >Tutoriel Python >Comment créer des axes discontinus dans Matplotlib ?

Comment créer des axes discontinus dans Matplotlib ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-01 16:33:12978parcourir

How to Create Discontinuous Axes in 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!

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