Python Pandas

Pandas Matplotlib을 이용한 데이터 시각화

PyExplorer 2025. 2. 22. 09:30

Matplotlib을 이용한 데이터 시각화

데이터 분석에서 시각화는 매우 중요한 요소입니다. 데이터를 그래프로 표현하면 패턴을 쉽게 발견할 수 있으며, 복잡한 수치를 직관적으로 이해하는 데 큰 도움이 됩니다. Python에서 가장 널리 사용되는 시각화 라이브러리 중 하나가 바로 Matplotlib입니다. 이번 포스팅에서는 Matplotlib을 이용한 기본적인 데이터 시각화 방법을 설명하고, 다양한 예제를 통해 실습해보겠습니다.

1. Matplotlib 소개

Matplotlib은 Python에서 데이터를 시각화할 때 가장 많이 사용하는 라이브러리 중 하나입니다. 다양한 종류의 그래프를 손쉽게 생성할 수 있으며, 세부적인 스타일 조정도 가능합니다. Matplotlib의 핵심 모듈인 pyplot을 이용하면 간단한 코드로 시각화를 구현할 수 있습니다.

2. Matplotlib 설치 및 기본 사용법

Matplotlib은 기본적으로 pip 명령어를 사용하여 설치할 수 있습니다.

pip install matplotlib

설치 후, 기본적인 사용법을 살펴보겠습니다. 먼저 Matplotlib의 pyplot 모듈을 불러와 간단한 선 그래프를 그려보겠습니다.

import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 그래프 그리기
plt.plot(x, y)
plt.title("Sin 함수 그래프")
plt.xlabel("x 값")
plt.ylabel("y 값")
plt.show()

위 코드를 실행하면 x 값에 대한 sin 함수의 그래프가 출력됩니다.

3. Matplotlib의 주요 그래프 종류

Matplotlib을 사용하면 다양한 유형의 그래프를 생성할 수 있습니다. 대표적인 그래프의 종류와 그리는 방법을 알아보겠습니다.

3.1. 선 그래프 (Line Plot)

선 그래프는 연속적인 데이터를 시각화하는 데 유용합니다.

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, label='sin')
plt.plot(x, y2, label='cos', linestyle='dashed')
plt.title("Sin & Cos 함수 그래프")
plt.xlabel("x 값")
plt.ylabel("y 값")
plt.legend()
plt.show()

label을 이용하여 범례를 추가할 수 있으며, linestyle을 조정하여 점선 스타일을 적용할 수 있습니다.

3.2. 막대 그래프 (Bar Chart)

막대 그래프는 범주형 데이터를 비교하는 데 유용합니다.

categories = ['A', 'B', 'C', 'D']
values = [5, 7, 3, 8]

plt.bar(categories, values, color='skyblue')
plt.title("막대 그래프 예제")
plt.xlabel("카테고리")
plt.ylabel("값")
plt.show()

3.3. 히스토그램 (Histogram)

히스토그램은 데이터의 분포를 나타낼 때 사용됩니다.

data = np.random.randn(1000)

plt.hist(data, bins=30, color='lightcoral', edgecolor='black')
plt.title("히스토그램 예제")
plt.xlabel("값")
plt.ylabel("빈도수")
plt.show()

bins를 조정하여 막대의 개수를 설정할 수 있으며, edgecolor를 지정하여 테두리를 추가할 수 있습니다.

3.4. 산점도 (Scatter Plot)

산점도는 두 변수 간의 관계를 시각화하는 데 유용합니다.

x = np.random.rand(100)
y = np.random.rand(100)

plt.scatter(x, y, color='green', alpha=0.5)
plt.title("산점도 예제")
plt.xlabel("X 값")
plt.ylabel("Y 값")
plt.show()

alpha 값을 조정하여 투명도를 설정할 수 있습니다.

3.5. 파이 차트 (Pie Chart)

파이 차트는 비율을 나타내는 데 사용됩니다.

labels = ['A', 'B', 'C', 'D']
sizes = [30, 20, 40, 10]

plt.pie(sizes, labels=labels, autopct='%1.1f%%', colors=['gold', 'lightblue', 'lightgreen', 'lightcoral'])
plt.title("파이 차트 예제")
plt.show()

autopct를 이용하여 각 섹션의 비율을 표시할 수 있습니다.

4. 그래프 스타일 및 커스터마이징

Matplotlib은 다양한 스타일을 제공하며, 색상, 선 종류, 마커 등을 조정할 수 있습니다.

plt.style.use('ggplot')  # 스타일 적용

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y, marker='o', linestyle='-', color='purple', markersize=5, linewidth=2)
plt.title("커스터마이징된 그래프")
plt.xlabel("x 값")
plt.ylabel("y 값")
plt.show()

다양한 스타일을 적용하면 그래프의 가독성을 높일 수 있습니다.

5. 여러 개의 그래프 표시 (Subplot)

여러 개의 그래프를 한 화면에 표시하려면 subplot()을 사용할 수 있습니다.

fig, axs = plt.subplots(2, 2, figsize=(10, 8))

x = np.linspace(0, 10, 100)
axs[0, 0].plot(x, np.sin(x))
axs[0, 0].set_title("Sin 함수")

axs[0, 1].plot(x, np.cos(x), color='r')
axs[0, 1].set_title("Cos 함수")

axs[1, 0].hist(np.random.randn(1000), bins=30, color='g')
axs[1, 0].set_title("히스토그램")

axs[1, 1].scatter(np.random.rand(100), np.random.rand(100), color='b')
axs[1, 1].set_title("산점도")

plt.tight_layout()
plt.show()

6. 결론

Matplotlib을 이용하면 다양한 유형의 그래프를 생성하고 스타일을 조정할 수 있습니다. 기본적인 그래프부터 커스터마이징까지 여러 가지 기능을 학습하면서 데이터 시각화의 기초를 익힐 수 있습니다.