본문 바로가기

프로그래밍 언어/파이썬

파이썬 Matplotlib 입문, 데이터 시각화의 시작

파이썬 Matplotlib 입문, 데이터 시각화의 시작

Matplotlib는 파이썬(Python)에서 가장 널리 사용되는 데이터 시각화 라이브러리 중 하나입니다. 다양한 형태의 그래프와 차트를 그릴 수 있어, 데이터를 효과적으로 표현하는 데 필수적인 도구로 자리 잡았습니다. 이 글에서는 Matplotlib의 기본 사용법부터 고급 기능까지 다루며, 데이터를 시각적으로 이해하는 첫걸음을 함께 내딛어보겠습니다.

 

 

목차

  1. Matplotlib 개요
  2. Matplotlib 설치 및 설정
  3. 기본 그래프 그리기
  4. 다양한 그래프 유형
  5. 그래프 커스터마이징
  6. 서브플롯 사용하기
  7. 실전 예제

 

1. Matplotlib 개요

Matplotlib는 파이썬(Python)에서 데이터를 시각화하기 위한 라이브러리로, 다양한 형태의 그래프와 차트를 손쉽게 생성할 수 있습니다. 2003년에 처음 개발되어 현재는 커뮤니티에서 활발히 사용되고 있으며, 주로 과학적 데이터 분석과 연구 분야에서 널리 활용되고 있습니다.

Matplotlib는 MATLAB과 유사한 인터페이스를 제공하여, MATLAB 사용자도 쉽게 접근할 수 있습니다. 이 라이브러리는 간단한 선 그래프부터 복잡한 3D 그래프까지 다양한 시각화 작업을 지원합니다.

 

 

2. Matplotlib 설치 및 설정

Matplotlib를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 파이썬 패키지 관리자(Pip)를 사용하여 쉽게 설치할 수 있습니다:

  • 설치 명령어: pip install matplotlib

설치가 완료되면, 파이썬 코드에서 import matplotlib.pyplot as plt를 통해 Matplotlib의 pyplot 모듈을 불러올 수 있습니다. pyplot은 간단한 인터페이스를 제공하여, 빠르고 쉽게 그래프를 그릴 수 있도록 도와줍니다.

 

 

3. 기본 그래프 그리기

Matplotlib의 기본적인 사용법을 익히기 위해, 간단한 선 그래프(line plot)를 그려보겠습니다. 다음은 기본적인 선 그래프를 그리는 예제입니다:


import matplotlib.pyplot as plt

# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 그래프 그리기
plt.plot(x, y)
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
    

이 코드에서는 plot() 함수를 사용해 선 그래프를 그리고, title(), xlabel(), ylabel() 함수를 사용해 그래프의 제목과 축 레이블을 설정했습니다. 마지막으로 show() 함수를 호출하여 그래프를 화면에 출력합니다.

 

 

4. 다양한 그래프 유형

Matplotlib는 다양한 유형의 그래프를 지원하여 데이터를 다각도로 분석할 수 있게 합니다. 아래는 대표적인 그래프 유형들입니다:

  • 막대 그래프(Bar Plot): 카테고리별 데이터를 시각화하는 데 유용합니다.
    
    plt.bar(['A', 'B', 'C', 'D'], [10, 20, 15, 25])
    plt.title('Bar Plot')
    plt.show()
                
  • 히스토그램(Histogram): 데이터 분포를 시각화할 때 주로 사용됩니다.
    
    import numpy as np
    
    data = np.random.randn(1000)
    plt.hist(data, bins=30)
    plt.title('Histogram')
    plt.show()
                
  • 산점도(Scatter Plot): 두 변수 간의 관계를 시각화하는 데 유용합니다.
    
    x = [1, 2, 3, 4, 5]
    y = [2, 3, 4, 5, 6]
    plt.scatter(x, y)
    plt.title('Scatter Plot')
    plt.show()
                
  • 파이 차트(Pie Chart): 전체에 대한 각 부분의 비율을 시각화합니다.
    
    sizes = [15, 30, 45, 10]
    labels = ['A', 'B', 'C', 'D']
    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.title('Pie Chart')
    plt.show()
                

 

 

5. 그래프 커스터마이징

Matplotlib의 강력한 기능 중 하나는 그래프의 다양한 요소를 자유롭게 커스터마이징할 수 있다는 점입니다. 색상, 선 두께, 스타일 등 다양한 속성을 조정하여 그래프를 원하는 대로 꾸밀 수 있습니다.

  • 선 스타일 변경: plt.plot() 함수에서 linestyle 옵션을 사용해 선의 스타일을 변경할 수 있습니다.
    
    plt.plot(x, y, linestyle='--', color='r', linewidth=2)
    plt.title('Customized Line Plot')
    plt.show()
                
  • 축 범위 지정: plt.xlim()plt.ylim() 함수를 사용해 축의 범위를 지정할 수 있습니다.
    
    plt.plot(x, y)
    plt.xlim(0, 6)
    plt.ylim(0, 30)
    plt.title('Axis Range Customized Plot')
    plt.show()
                
  • 레이블 및 텍스트 추가: plt.text()를 사용해 그래프에 특정 지점에 텍스트를 추가할 수 있습니다.
    
    plt.plot(x, y)
    plt.text(3, 10, 'Point (3, 10)', fontsize=12, color='blue')
    plt.title('Plot with Text Annotation')
    plt.show()
                

 

 

6. 서브플롯 사용하기

Matplotlib는 하나의 그림에 여러 개의 그래프를 배치할 수 있는 서브플롯 기능을 제공합니다. 이는 다양한 데이터를 동시에 비교하고 분석하는 데 유용합니다.


# 서브플롯 예제
plt.figure(figsize=(10, 4))

# 첫 번째 서브플롯
plt.subplot(1, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('Plot 1')

# 두 번째 서브플롯
plt.subplot(1, 2, 2)
plt.plot([1, 2, 3], [1, 2, 3])
plt.title('Plot 2')

plt.suptitle('Subplots Example')
plt.show()
    

위 예제에서는 subplot() 함수를 사용해 하나의 창에 두 개의 그래프를 나란히 배치했습니다. figure() 함수의 figsize 옵션을 사용하여 그래프의 크기도 조정할 수 있습니다.

 

 

 

 

7. 실전 예제

이제까지 배운 내용을 바탕으로 실제 데이터를 시각화하는 예제를 살펴보겠습니다. 예를 들어, 임의의 데이터를 생성하여 여러 종류의 그래프로 시각화해봅니다:


import numpy as np

# 임의의 데이터 생성
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.figure(figsize=(10, 5))

# 첫 번째 그래프
plt.subplot(2, 1, 1)
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.legend()
plt.title('Sine and Cosine Functions')

# 두 번째 그래프
plt.subplot(2, 1, 2)
plt.bar(['A', 'B', 'C'], [5, 7, 3])
plt.title('Bar Plot Example')

plt.tight_layout()
plt.show()
    

이 예제에서는 sincos 함수의 값을 선 그래프로 그린 후, 아래에는 막대 그래프를 추가하여 여러 가지 데이터를 동시에 시각화하는 방법을 보여줍니다. tight_layout() 함수는 서브플롯 간의 간격을 자동으로 조정하여 보기 좋게 배치해줍니다.