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

Matplotlib로 해칭(Hatching)이 적용된 등고선 그래프 그리는 방법

Matplotlib에서 contourf() 함수의 hatches 매개변수를 활용하면 등고선 그래프의 각 영역에 빗금(해칭) 패턴을 추가할 수 있습니다. 이 기법은 흑백 인쇄물이나 색상 구분이 어려운 환경에서도 데이터 영역을 명확하게 구분하고 싶을 때 특히 유용합니다.

구현 단계

  • 그림 크기를 설정하고 서브플롯 주변의 여백(padding)을 조정합니다.
  • NumPy를 사용하여 x, y, z 데이터 포인트를 생성합니다.
  • xy 배열을 flatten()으로 1차원 배열로 변환합니다.
  • Figure와 서브플롯(Axes) 객체를 생성합니다.
  • 다양한 해칭 패턴('-' , '/', '\', '//')을 지정하여 채워진 등고선(contourf)을 그립니다.
  • ScalarMappable 인스턴스에 대한 컬러바(colorbar)를 추가합니다.
  • show() 메서드를 호출하여 그래프를 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

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

x = np.linspace(-3, 5, 150).reshape(1, -1)
y = np.linspace(-3, 5, 120).reshape(-1, 1)
z = np.cos(x) + np.sin(y)

x, y = x.flatten(), y.flatten()

fig1, ax1 = plt.subplots()

cs = ax1.contourf(x, y, z, hatches=['-', '/', '\\', '//'],
                  cmap='gray', extend='both', alpha=0.5)
fig1.colorbar(cs)

plt.show()

코드 설명

np.linspace(-3, 5, 150)은 -3부터 5까지 150개의 균일한 간격의 값을 생성하며, reshape(1, -1)reshape(-1, 1)을 통해 브로드캐스팅이 가능한 2차원 형태로 변환합니다. z 값은 코사인과 사인 함수의 합으로 계산됩니다.

contourf() 호출 시 hatches 리스트에 전달된 각 패턴 문자열이 등고선 레벨 구간에 순서대로 적용됩니다. cmap='gray'는 회색조 컬러맵을 사용하고, extend='both'는 최소·최대 범위를 벗어나는 값도 함께 처리합니다. alpha=0.5로 반투명도를 설정하여 해칭 패턴이 더 잘 보이도록 합니다.

실행 결과

위 코드를 실행하면 회색조 배경 위에 네 가지 서로 다른 해칭 패턴이 적용된 등고선 그래프가 출력되며, 오른쪽에는 해당 값의 분포를 나타내는 컬러바가 함께 표시됩니다.