
Matplotlib은 Python에서 데이터를 그래프와 차트 형태로 표현할 수 있도록 도와주는 시각화 라이브러리이다. 기본적인 선 그래프와 막대 그래프, 산점도부터 다양한 형태의 2D 및 3D 그래프까지 만들 수 있으며, 그래프의 색상, 크기, 축, 제목 등 여러 요소를 자유롭게 설정할 수 있다.
또한 완성된 그래프를 PNG, PDF, SVG 등의 다양한 파일 형식으로 저장할 수 있어 데이터 분석 결과를 보고서나 문서에 활용하기에도 편리하다. 이러한 특징 때문에 Matplotlib은 데이터 분석, 통계 분석, 과학 및 연구 분야에서 널리 사용되며, 특히 NumPy와 pandas 같은 라이브러리와 함께 데이터를 분석하고 시각화하는 데 많이 활용된다.
pyplot이라는 인터페이스를 제공한다. 이 인터페이스는 간단하게 그래프를 그릴 수 있도록 도와주는 함수형 인터페이스로, MATLAB과 유사한 방식으로 작동한다.import matplotlib.pyplot as plt
# 월별 방문자 수
months = [1, 2, 3, 4, 5, 6]
visitors = [120, 150, 180, 160, 210, 250]
plt.plot(months, visitors)
plt.title('Monthly Visitors')
plt.xlabel('Month')
plt.ylabel('Visitors')
plt.show()

Matplotlib에서 그래프를 그리기 위해서는 기본적으로 Figure와 Axes라는 두 가지 객체를 이해해야 한다.
Figure: 그래프의 전체적인 틀(캔버스) 역할
Axes: 실제 그래프가 그려지는 영역
→ Figure는 그래프의 전체 화면이고, Axes는 그 화면 안에 있는 개별 그래프라고 생각하면 된다.
Figure는 하나 이상의 Axes를 포함할 수 있으며, 하나의 Figure 안에 여러 개의 Axes(즉, 서브플롯)를 배치하여 복합적인 그래프를 만들 수 있다. 이는 데이터 분석에서 다양한 시각적 요소를 한 화면에 배치할 때 유용하다.
import matplotlib.pyplot as plt
# 2x2 크기의 서브플롯 생성
fig, axs = plt.subplots(2, 2)
# 각 서브플롯에 서로 다른 그래프 그리기
axs[0, 0].plot([1, 2, 3, 4], [2, 4, 6, 8])
axs[0, 1].plot([1, 2, 3, 4], [1, 4, 9, 16])
axs[1, 0].plot([1, 2, 3, 4], [1, 8, 27, 64])
axs[1, 1].plot([1, 2, 3, 4], [1, 16, 81, 256])

pyplot 인터페이스는 간단한 그래프에 적합하지만, 보다 복잡한 그래프를 그리거나 여러 개의 그래프를 한 화면에 그릴 때는 객체 지향 방식이 더 유용하다.
이 방식은 복잡한 그래프를 그리거나, 여러 개의 서브플롯을 만들 때 유리하다.
Matplotlib의 객체 지향 방식에서는 Figure와 Axes를 직접 생성하고 관리할 수 있다. 아래는 객체 지향 방식으로 그래프를 그리는 예제이다.
import matplotlib.pyplot as plt
# Figure와 Axes 객체 생성
fig, ax = plt.subplots()
# Axes 객체를 이용해 그래프 그리기
ax.plot([1, 2, 3, 4, 5], [5, 15, 10, 25, 20])
ax.set_xlabel('날짜')
ax.set_ylabel('판매량')
ax.set_title('월별 판매량 변화')
plt.show()
