「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Matplotlib で不連続な軸を作成するには?

Matplotlib で不連続な軸を作成するには?

2024 年 11 月 26 日に公開
ブラウズ:849

How to Create Discontinuous Axes in Matplotlib?

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

カスタム軸変換:

不連続軸を作成するもう 1 つの方法は、カスタム軸変換を使用することです。新しい変換クラスを定義することで、データを軸にマッピングする方法を指定できます。次のコードは、このアプローチを示しています。

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 で不連続軸を作成するには、サブプロットまたはカスタム軸変換を使用します。カスタム変換アプローチにより、軸の動作の柔軟性と制御が向上します。どちらの方法も、ギャップや不連続性のあるデータを視覚化する場合に効果的です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3