Matplotlib での不連続軸の作成
はじめに:
Matplotlib を使用してプロットを作成する場合、通常は連続 X 軸が使用されます。ただし、x 軸の値にギャップやジャンプが発生するなど、不連続な軸が必要な場合もあります。これは、値が欠落しているかまばらに分布しているデータを表示する場合に役立ちます。
サブプロットの使用:
不連続軸を作成する 1 つの方法は、サブプロットを使用することです。各サブプロットには異なる範囲の X 軸値が割り当てられるため、サブプロット間にギャップが生じることがあります。簡単な例を次に示します。
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()
カスタム軸変換:
不連続軸を作成する別の方法は、カスタム軸変換を使用することです。新しい変換クラスを定義することで、データを軸にマッピングする方法を指定できます。次のコードは、このアプローチを示しています。
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()
結論:
Matplotlib で不連続軸を作成するには、サブプロットまたはカスタム軸変換を使用します。カスタム変換アプローチにより、軸の動作の柔軟性と制御が向上します。どちらの方法も、ギャップや不連続性のあるデータを視覚化する場合に効果的です。
以上がMatplotlib で不連続な軸を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。