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
Libérer: 2024-12-01 16:33:12
original
977 Les gens l'ont consulté

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()
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal