Matplotlib에서 데이터 값을 색상 정보로 변환하려면 컬러맵(colormap)을 활용하면 됩니다. 각 데이터 값에 컬러맵을 적용해 RGBA 색상으로 매핑한 뒤, 이를 산점도(scatter plot)의 색상으로 지정하는 방식입니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
- 컬러맵 인스턴스를 가져옵니다. plt.get_cmap() 함수에 이름을 지정하지 않으면(None) 기본 rc 값이 사용됩니다.
- 색상 정보로 변환할 임의의(random) 데이터 값을 생성합니다.
- 산점도에 사용할 임의의 데이터 포인트 x와 y를 생성합니다.
- scatter() 메서드를 사용하여 x와 y를 플로팅하고, 각 점의 색상을 데이터 값에서 변환된 색상으로 지정합니다.
- show() 메서드로 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
plasma = plt.get_cmap('GnBu_r')
values = np.random.rand(100)
x = np.random.rand(len(values))
y = np.random.rand(len(values))
sc = plt.scatter(x, y, c=[plasma(val) for val in values])
plt.show()코드 설명
위 예제에서는 GnBu_r(녹색-파란색 역순) 컬러맵을 사용했습니다. 리스트 컴프리헨션 [plasma(val) for val in values]를 통해 0과 1 사이의 각 데이터 값이 해당 컬러맵의 RGBA 색상 튜플로 변환됩니다. 변환된 색상은 scatter() 메서드의 c 매개변수에 전달되어, 각 데이터 포인트가 자신의 값에 따라 다른 색상으로 표현됩니다.
데이터 값이 클수록 컬러맵의 한쪽 끝 색상에, 작을수록 반대쪽 끝 색상에 가깝게 매핑되므로, 결과적으로 산점도만 보고도 각 점의 상대적인 크기를 직관적으로 파악할 수 있습니다.
출력 결과
코드를 실행하면 100개의 무작위 데이터 포인트가 GnBu_r 컬러맵 기반의 다양한 색상으로 표시된 산점도가 나타납니다.