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

Matplotlib 이중 Y축 차트에서 막대 그래프와 선 그래프 정렬하는 방법

Matplotlib에서 두 개의 Y축을 가진 차트에 막대 그래프와 선 그래프를 함께 표시하려면 twinx() 메서드를 사용하면 됩니다. 이 메서드는 X축을 공유하면서 Y축은 서로 독립적인 쌍둥이 Axes 객체를 생성해 줍니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.

  • 두 개의 열(col1, col2)을 가진 Pandas 데이터프레임을 생성합니다.

  • plot() 메서드에 kind="bar" 옵션을 지정하여 데이터프레임을 막대 그래프로 그립니다.

  • twinx() 메서드를 사용하여 X축을 공유하지만 Y축은 독립적인 쌍둥이 Axes를 만듭니다.

  • 막대 그래프의 X축 눈금(ticks) 위치와 데이터프레임 열 값을 사용하여 선 그래프를 그립니다.

  • show() 메서드를 호출하여 최종 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
import pandas as pd

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame({"col1": [1, 3, 5, 7, 1], "col2": [1, 5, 7, 9, 1]})
ax = df.plot(kind="bar")
ax2 = ax.twinx()

ax2.plot(ax.get_xticks(),
    df[['col1', 'col2']].values,
    linestyle='-',
    marker='o', linewidth=2.0)

plt.show()

실행 결과

위 코드를 실행하면 막대 그래프 위에 같은 X축 위치에 정렬된 선 그래프가 마커(o)와 함께 표시됩니다. 왼쪽 Y축은 막대 그래프의 값 범위를, 오른쪽 Y축은 선 그래프의 값 범위를 나타내므로, 서로 다른 스케일의 두 데이터를 하나의 차트에서 직관적으로 비교할 수 있습니다.

핵심 포인트

  • twinx()는 기존 Axes의 X축을 공유하는 새로운 Y축(Axes)을 생성합니다.

  • 선 그래프를 막대 중심에 정확히 맞추려면 ax.get_xticks()로 반환되는 눈금 좌표를 그대로 사용하는 것이 중요합니다.

  • 두 축의 눈금 간격이나 색상을 조정하면 가독성을 더욱 높일 수 있습니다.