Python Matplotlib을 사용한 산점도 시각화

Matplotlib 라이브러리를 활용하여 다양한 스타일의 산점도를 생성하는 방법을 학습합니다.

1. 단일 데이터 포인트 산점도

scatter() 함수를 사용하여 특정 데이터 포인트의 위치와 크기를 지정하여 산점도를 그릴 수 있습니다. 그래프 제목, 축 레이블, 글꼴 크기 등을 설정하여 가독성을 높이고, tick_params()를 사용하여 축 눈금의 크기를 조절합니다.

import matplotlib.pyplot as plt
import matplotlib

# 백엔드 설정 (필요에 따라 TkAgg 대신 다른 백엔드 사용 가능)
matplotlib.use('TkAgg')

# 그래프 스타일 설정
plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()

# 단일 데이터 포인트 산점도 생성 (x=2, y=4), 크기(s)는 200
ax.scatter(2, 4, s=200)

# 그래프 제목 및 축 레이블 설정
ax.set_title("제곱수", fontsize=24)
ax.set_xlabel("값", fontsize=14)
ax.set_ylabel("값의 제곱", fontsize=14)

# 축 눈금 크기 설정
ax.tick_params(axis='both', which='major', labelsize=14)

plt.show()

2. 여러 데이터 포인트 산점도

scatter() 함수에 x, y 값의 리스트를 전달하여 여러 데이터 포인트로 구성된 산점도를 그릴 수 있습니다. 각 포인트의 크기는 s 매개변수로 조절합니다.

import matplotlib.pyplot as plt
import matplotlib

matplotlib.use('TkAgg')

# x, y 값 리스트 정의
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]

plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()

# 여러 데이터 포인트 산점도 생성, 크기(s)는 100
ax.scatter(x_values, y_values, s=100)

# 그래프 제목 및 축 레이블 설정
ax.set_title("제곱수", fontsize=24)
ax.set_xlabel("값", fontsize=14)
ax.set_ylabel("값의 제곱", fontsize=14)

# 축 눈금 크기 설정
ax.tick_params(axis='both', which='major', labelsize=14)

plt.show()

3. 대규모 데이터셋 시각화

range() 함수와 리스트 컴프리헨션을 사용하여 대규모 데이터셋을 생성하고, 이를 바탕으로 산점도를 그릴 수 있습니다. 포인트 크기를 줄여(s=10) 밀집된 데이터도 효과적으로 표현합니다. ax.axis()를 사용하여 그래프의 x축과 y축 범위를 명시적으로 지정할 수 있습니다.

import matplotlib.pyplot as plt
import matplotlib

matplotlib.use('TkAgg')

# 1부터 1000까지의 x 값과 해당 제곱값 y 값 생성
x_values = range(1, 1001)
y_values = [x**2 for x in x_values]

plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()

# 대규모 데이터 산점도 생성, 크기(s)는 10
ax.scatter(x_values, y_values, s=10)

# 그래프 제목 및 축 레이블 설정
ax.set_title("제곱수", fontsize=24)
ax.set_xlabel("값", fontsize=14)
ax.set_ylabel("값의 제곱", fontsize=14)

# 축 눈금 크기 설정
ax.tick_params(axis='both', which='major', labelsize=14)

# 축 범위 설정: x축은 0~1100, y축은 0~1100000
ax.axis([0, 1100, 0, 1100000])

plt.show()

4. 사용자 정의 색상 및 색상 맵

scatter() 함수에서 c 매개변수를 사용하여 각 포인트의 색상을 지정할 수 있습니다. 단일 색상(예: 'red', (0, 0.8, 0) RGB 튜플) 또는 값에 따른 색상 맵을 적용할 수 있습니다. cmap 매개변수에 plt.cm.Blues와 같은 Matplotlib의 내장 색상 맵을 지정하면, y 값의 크기에 따라 파란색 계열로 색상이 변화하는 산점도를 얻을 수 있습니다.

import matplotlib.pyplot as plt
import matplotlib

matplotlib.use('TkAgg')

x_values = range(1, 1001)
y_values = [x**2 for x in x_values]

plt.style.use('seaborn-v0_8')
fig, ax = plt.subplots()

# y 값에 따라 색상이 변하는 산점도 생성 (Blues 색상 맵 사용)
ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=10)

# 그래프 제목 및 축 레이블 설정
ax.set_title("제곱수", fontsize=24)
ax.set_xlabel("값", fontsize=14)
ax.set_ylabel("값의 제곱", fontsize=14)

# 축 눈금 크기 설정
ax.tick_params(axis='both', which='major', labelsize=14)

# 축 범위 설정
ax.axis([0, 1100, 0, 1100000])

# plt.show() # 표시하지 않고 저장하는 경우 주석 처리

5. 그래프 저장

생성된 그래프는 plt.savefig() 함수를 사용하여 파일로 저장할 수 있습니다. 첫 번째 인자로는 파일명을 지정하고, bbox_inches='tight' 옵션을 사용하면 그래프 주변의 불필요한 여백을 제거하여 깔끔하게 저장할 수 있습니다.

# ... (이전 코드) ...

# 그래프를 'squares_plot.png' 파일로 저장, 여백 제거
plt.savefig('squares_plot.png', bbox_inches='tight')

태그: matplotlib python 산점도 데이터 시각화 scatter

7월 26일 02:40에 게시됨