개요
CSV 파일에 저장된 세 번째 배열(열)의 값을 기준으로 2D 산점도(scatter plot)의 색상을 표시하고 싶다면, matplotlib의 scatter() 함수에서 c 파라미터를 활용하면 됩니다. 아래 단계를 순서대로 따라 해 보세요.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 세 개의 헤더(컬럼)를 가진 CSV 파일을 pandas로 읽어옵니다.
- 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯 배치의 일부로 그림에 축(ax)을 추가합니다.
- CSV 데이터로 산점도를 그리면서, 세 번째 열을 c 인자에 전달해 색상으로 표현합니다.
- show() 메서드를 사용해 그림을 화면에 출력합니다.
예제 코드
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
columns = ["data1", "data2", "data3"]
df = pd.read_csv("input.csv", usecols=columns)
fig = plt.figure()
ax = fig.add_subplot(111)
sc = ax.scatter(df.data1, df.data2, c=df.data3, cmap="viridis", marker="*")
fig.colorbar(sc, label="data3")
plt.show()
이 코드의 핵심은 c=df.data3 부분입니다. x축에는 data1, y축에는 data2가 배치되고, 각 데이터 포인트의 색상은 data3 값에 따라 결정됩니다. cmap 옵션으로 원하는 컬러맵을 지정할 수 있으며, 컬러바(colorbar)를 함께 추가하면 색상과 수치의 대응 관계를 한눈에 파악할 수 있습니다.
입력 파일(input.csv)
"input.csv" 파일에는 다음과 같은 데이터가 들어 있습니다.
| data1 | data2 | data3 |
|---|---|---|
| 1 | 45 | 71 |
| 2 | 98 | 65 |
| 3 | 75 | 29 |
| 4 | 54 | 63 |
| 5 | 23 | 12 |
| 6 | 35 | 27 |
| 7 | 46 | 39 |
| 8 | 57 | 44 |
| 9 | 68 | 51 |
출력 결과
코드를 실행하면 data3 값에 따라 색상이 다르게 표시되는 별 모양(*) 산점도가 생성됩니다. 값이 클수록 컬러맵에서 밝은 계열의 색으로, 작을수록 어두운 계열의 색으로 표현되므로, 세 변수 간의 관계를 하나의 그래프에서 직관적으로 확인할 수 있습니다.