Mencipta Paksi Tak Berterusan dalam Matplotlib
Pengenalan:
Apabila mencipta plot menggunakan Matplotlib, a paksi-x berterusan biasanya digunakan. Walau bagaimanapun, mungkin terdapat keadaan di mana paksi tak selanjar dikehendaki, di mana jurang atau lompatan berlaku dalam nilai paksi-x. Ini boleh berguna untuk memaparkan data dengan nilai yang tiada atau diedarkan jarang.
Menggunakan Subplot:
Satu pendekatan untuk mencipta paksi tak selanjar ialah menggunakan subplot. Setiap subplot boleh diberikan julat nilai paksi-x yang berbeza, mengakibatkan jurang antara subplot. Berikut ialah contoh mudah:
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()
Transformasi Paksi Tersuai:
Kaedah lain untuk mencipta paksi tak selanjar ialah menggunakan transformasi paksi tersuai. Dengan mentakrifkan kelas transformasi baharu, kita boleh menentukan cara data dipetakan ke paksi. Kod berikut menunjukkan pendekatan ini:
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()
Kesimpulan:
Mencipta paksi tak selanjar dalam Matplotlib boleh dicapai menggunakan subplot atau transformasi paksi tersuai. Pendekatan transformasi tersuai memberikan lebih fleksibiliti dan kawalan ke atas tingkah laku paksi. Kedua-dua kaedah boleh berkesan untuk menggambarkan data dengan jurang atau ketakselanjaran.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Paksi Tidak Berterusan dalam Matplotlib?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!