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.
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