ホームページ > バックエンド開発 > Python チュートリアル > Matplotlib で不連続な軸を作成するには?

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

Mary-Kate Olsen
リリース: 2024-12-01 16:33:12
オリジナル
1043 人が閲覧しました

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()
ログイン後にコピー

カスタム軸変換:

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート