Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 해치(Hatch) 밀도를 줄이는 방법

Matplotlib에서 패턴 채우기(해치)의 밀도가 너무 촘촘할 때, 기본 해치 클래스를 상속하여 밀도를 조절하는 커스텀 클래스를 만들면 손쉽게 해결할 수 있습니다. 아래 단계를 따라 진행해 보세요.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 자동으로 조정합니다.
  • 기본 HorizontalHatch 클래스를 상속받아 밀도를 직접 제어하는 커스텀 수평 해치 클래스를 정의합니다.
  • 커스텀 해치 클래스를 Matplotlib의 해치 타입 목록에 추가합니다.
  • 새 그림을 생성하거나 기존 그림을 활성화합니다.
  • 서브플롯 배치의 일부로 'ax1' 축을 그림에 추가합니다.
  • 데이터 포인트 목록을 만듭니다.
  • x, y 데이터로 막대 그래프를 그리며, hatch='o', color='green', edgecolor='red' 옵션을 지정합니다.
  • show() 메서드를 호출하여 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt, hatch

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

class MyHorizontalHatch(hatch.HorizontalHatch):
    def __init__(self, hatch, density):
        char_count = hatch.count('o')
        if char_count > 0:
            self.num_lines = int((1.0 / char_count) * density)
        else:
            self.num_lines = 0
        self.num_vertices = self.num_lines * 2
        super().__init__(hatch, density)

hatch._hatch_types.append(MyHorizontalHatch)

fig = plt.figure()

ax1 = fig.add_subplot(111)

x = [3, 6, 1]
y = [4, 6, 1]

ax1.bar(x, y, color='green', edgecolor='red', hatch="o", lw=1., zorder=0)

plt.show()

실행 결과

Matplotlib에서 해치(Hatch) 밀도를 줄이는 방법

위 코드에서 핵심은 MyHorizontalHatch 클래스입니다. 이 클래스는 해치 문자('o')의 개수를 세어 선(line)의 개수를 계산한 뒤, 밀도 값에 따라 실제 그려지는 해치 선의 수를 조정합니다. 이렇게 하면 기본 설정보다 더 여유 있는 해치 패턴을 얻을 수 있으며, 그래프의 가독성도 함께 향상됩니다.