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