Heim > Backend-Entwicklung > Python-Tutorial > Wie erstelle ich diskontinuierliche Achsen in Matplotlib?

Wie erstelle ich diskontinuierliche Achsen in Matplotlib?

Mary-Kate Olsen
Freigeben: 2024-12-01 16:33:12
Original
1043 Leute haben es durchsucht

How to Create Discontinuous Axes in Matplotlib?

Diskontinuierliche Achsen in Matplotlib erstellen

Einführung:

Beim Erstellen von Plots 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.

Unterdiagramme verwenden:

Ein Ansatz zum Erstellen einer diskontinuierlichen Achse ist die Verwendung von Unterdiagrammen. Jedem Unterdiagramm kann ein anderer Bereich von x-Achsenwerten zugewiesen werden, was zu einer Lücke zwischen den Unterdiagrammen 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()
Nach dem Login kopieren

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()
Nach dem Login kopieren

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.

Das obige ist der detaillierte Inhalt vonWie erstelle ich diskontinuierliche Achsen in Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage