首頁 > 後端開發 > Python教學 > 如何在 Matplotlib 中建立不連續軸?

如何在 Matplotlib 中建立不連續軸?

Mary-Kate Olsen
發布: 2024-12-01 16:33:12
原創
982 人瀏覽過

How to Create Discontinuous Axes in Matplotlib?

在Matplotlib 建立不連續軸

簡介:

簡介:

使用子圖:

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()
登入後複製
建立不連續軸的一種方法是使用子圖。每個子圖都可以分配不同範圍的 x 軸值,從而導致子圖之間存在間隙。這是一個簡單的範例:

自訂軸轉換:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板