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()실행 결과

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