Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

matplotlib에서 길이가 다른 두 개의 배열을 하나의 그래프에 플로팅하는 방법

데이터 분석을 하다 보면 길이가 서로 다른 두 개의 배열을 하나의 그래프에 함께 표현해야 하는 경우가 자주 있습니다. 예를 들어, 원본 데이터와 이동 평균처럼 축소된 데이터를 비교할 때가 대표적입니다. matplotlib에서는 각 배열의 길이가 달라도 x축 좌표를 별도로 지정해 주기만 하면 아무 문제 없이 한 화면에 플로팅할 수 있습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
  • numpy를 사용하여 서로 다른 길이의 y1, x1, y2, x2 데이터 포인트를 생성합니다.
  • plot() 메서드를 사용해 (x1, y1)과 (x2, y2) 데이터를 각각 플로팅합니다.
  • show() 메서드를 호출하여 그래프를 화면에 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

# 그림 크기 및 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 길이가 100인 원본 데이터 생성 (누적 합)
y1 = (np.random.random(100) - 0.5).cumsum()

# 같은 데이터를 10개 구간의 평균으로 축소 → 길이 10짜리 배열
y2 = y1.reshape(-1, 10).mean(axis=1)

# 각 배열 길이에 맞는 x축 값 생성
x1 = np.linspace(0, 1, 100)
x2 = np.linspace(0, 1, 10)

# 두 배열 플로팅
plt.plot(x1, y1)
plt.plot(x2, y2)

plt.show()

실행 결과

위 코드를 실행하면 길이가 100인 원본 곡선과, 길이가 10으로 줄어든 평균값 곡선이 동일한 x축 범위(0~1) 위에 함께 그려진 그래프를 확인할 수 있습니다.

matplotlib에서 길이가 다른 두 개의 배열을 하나의 그래프에 플로팅하는 방법matplotlib에서 길이가 다른 두 개의 배열을 하나의 그래프에 플로팅하는 방법

핵심 포인트

여기서 중요한 것은 y값의 길이가 아니라 x값과 y값의 길이가 서로 일치해야 한다는 점입니다. x1은 100개, x2는 10개로 각각 대응되는 y배열과 길이를 맞춰주었기 때문에, 두 배열의 절대 길이가 달라도 matplotlib는 오류 없이 정상적으로 그래프를 그립니다. 이 방식은 리샘플링된 데이터, 이동 평균, 다운샘플링 결과 등을 원본 데이터와 비교할 때 매우 유용하게 활용됩니다.