"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Matplotlib에서 불연속 축을 만드는 방법은 무엇입니까?

Matplotlib에서 불연속 축을 만드는 방법은 무엇입니까?

2024년 11월 26일에 게시됨
검색:489

How to Create Discontinuous Axes in Matplotlib?

Matplotlib에서 불연속 축 생성

소개:

Matplotlib를 사용하여 플롯을 생성할 때, 연속적인 x축이 일반적으로 사용됩니다. 그러나 x축 값에 간격이나 점프가 발생하는 불연속 축이 필요한 경우가 있을 수 있습니다. 이는 누락되거나 성긴 분포 값이 있는 데이터를 표시하는 데 유용할 수 있습니다.

하위 도표 사용:

불연속 축을 생성하는 한 가지 접근 방식은 하위 도표를 사용하는 것입니다. 각 서브플롯에는 서로 다른 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에서 불연속 축 생성은 서브플롯 또는 사용자 정의 축 변환을 사용하여 수행할 수 있습니다. 사용자 정의 변환 접근 방식은 축 동작에 대한 더 많은 유연성과 제어를 제공합니다. 두 방법 모두 간격이나 불연속성이 있는 데이터를 시각화하는 데 효과적일 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3