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

Matplotlib 산점도에서 연속 값으로 색상 지정하기

데이터의 연속적인 값을 기준으로 Matplotlib 산점도(scatter plot)에 색상을 입히면, 세 번째 변수의 분포를 시각적으로 한눈에 파악할 수 있습니다. 이 글에서는 numpy로 생성한 랜덤 데이터를 활용해 산점도의 각 점을 연속 값에 따라 다르게 색칠하고, 컬러바(colorbar)까지 함께 표시하는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • numpy를 사용하여 x, y, z 세 개의 랜덤 데이터 배열을 생성합니다. 여기서 z는 각 점의 색상을 결정하는 연속 값으로 사용됩니다.
  • figure와 서브플롯(subplots)을 생성합니다.
  • ax.scatter() 메서드로 산점도를 그리며, c 파라미터에 z 값을 전달하고 cmap으로 원하는 컬러맵(colormap)을 지정합니다.
  • 산점도에서 반환된 ScalarMappable 인스턴스를 이용해 기존 축(axes)에 컬러바(colorbar)를 추가합니다.
  • plt.show() 메서드로 최종 그림을 화면에 출력합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

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

x, y, z = np.random.rand(3, 50)
f, ax = plt.subplots()

points = ax.scatter(x, y, c=z, s=50, cmap="plasma")
f.colorbar(points)

plt.show()

실행 결과

Matplotlib 산점도에서 연속 값으로 색상 지정하기

코드 설명

위 코드에서 핵심은 ax.scatter(x, y, c=z, cmap="plasma") 부분입니다. c=z를 지정하면 z 배열의 값 크기에 따라 각 점의 색상이 자동으로 매핑되며, cmap="plasma"는 낮은 값에서 높은 값으로 갈수록 보라색에서 노란색으로 변하는 색상 그라디언트를 적용합니다. 마지막으로 f.colorbar(points)를 호출하면 어떤 값이 어떤 색상에 해당하는지 확인할 수 있는 컬러바가 그림 오른쪽에 함께 표시됩니다.

이 방법은 온도, 밀도, 확률처럼 연속적인 수치 데이터를 2차원 평면 위에 시각화할 때 매우 유용하며, cmap 값을 viridis, coolwarm, RdYlBu 등으로 바꾸어 다양한 스타일의 결과물을 얻을 수 있습니다.