„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erstelle ich diskontinuierliche Achsen in Matplotlib?

Wie erstelle ich diskontinuierliche Achsen in Matplotlib?

Veröffentlicht am 26.11.2024
Durchsuche:359

How to Create Discontinuous Axes in Matplotlib?

Erstellen diskontinuierlicher Achsen in Matplotlib

Einführung:

Beim Erstellen von Diagrammen mit Matplotlib, a Typischerweise wird eine kontinuierliche x-Achse verwendet. Es kann jedoch Fälle geben, in denen eine diskontinuierliche Achse gewünscht ist und eine Lücke oder ein Sprung in den x-Achsenwerten auftritt. Dies kann nützlich sein, um Daten mit fehlenden oder dünn verteilten Werten anzuzeigen.

Verwenden von Unterdiagrammen:

Ein Ansatz zum Erstellen einer diskontinuierlichen Achse ist die Verwendung von Unterdiagrammen. Jedem Unterplot kann ein anderer Bereich von x-Achsenwerten zugewiesen werden, was zu einer Lücke zwischen den Unterplots führt. Hier ist ein einfaches Beispiel:

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

Benutzerdefinierte Achsentransformation:

Eine andere Methode zum Erstellen einer diskontinuierlichen Achse ist die Verwendung einer benutzerdefinierten Achsentransformation. Durch die Definition einer neuen Transformationsklasse können wir festlegen, wie die Daten der Achse zugeordnet werden. Der folgende Code demonstriert diesen Ansatz:

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

Fazit:

Das Erstellen einer diskontinuierlichen Achse in Matplotlib kann mithilfe von Unterplots oder benutzerdefinierten Achsentransformationen erreicht werden. Der benutzerdefinierte Transformationsansatz bietet mehr Flexibilität und Kontrolle über das Achsenverhalten. Beide Methoden können zur Visualisierung von Daten mit Lücken oder Diskontinuitäten effektiv sein.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3