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

파이썬 Matplotlib에서 그래프 안에 삽입 그래프(Inset) 추가하는 방법

하나의 파이썬 그래프 안에 다른 그래프를 삽입 그래프(inset) 형태로 추가하면, 전체 데이터 흐름과 함께 특정 구간을 확대해서 보여줄 수 있어 시각화의 완성도가 크게 높아집니다. Matplotlib에서는 fig.add_axes() 메서드를 활용해 기존 그래프 위에 새로운 좌표축을 얹는 방식으로 손쉽게 구현할 수 있습니다.

구현 단계

  • numpy를 사용하여 x, y 데이터 포인트를 생성합니다.
  • subplots() 메서드로 figure와 좌표축(fig, ax)를 생성합니다.
  • add_axes()를 호출해 기존 figure(2단계)에 새로운 좌표축을 추가합니다.
  • 기존 축(ax)에 x, y 데이터를 플롯합니다.
  • 새로 만든 축(ax_new)에도 x, y 데이터를 플롯합니다.
  • show() 메서드로 최종 figure를 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-1, 1, 100)
y = np.sin(x)
fig, ax = plt.subplots()
left, bottom, width, height = [.30, 0.6, 0.2, 0.25]
ax_new = fig.add_axes([left, bottom, width, height])
ax.plot(x, y, color='red')
ax_new.plot(x, y, color='green')
plt.show()

코드 설명

add_axes()에 전달되는 리스트 [left, bottom, width, height]는 figure 전체 크기를 1로 보았을 때의 상대적 비율입니다. 위 예제에서는 [0.30, 0.6, 0.2, 0.25]로 지정했기 때문에, 삽입 그래프가 figure 왼쪽에서 30%, 아래에서 60% 위치에 배치되며 너비는 20%, 높이는 25% 크기로 나타납니다. 이 값을 조정하면 삽입 그래프의 위치와 크기를 자유롭게 변경할 수 있습니다.

실행 결과

위 코드를 실행하면 빨간색으로 그려진 원본 사인 곡선 그래프 위에, 초록색으로 표시된 작은 삽입 그래프가 함께 출력됩니다. 두 그래프 모두 동일한 x, y 데이터를 사용하지만 서로 다른 색상과 크기로 표현되어, 하나의 figure 안에서 두 개의 독립적인 그래프가 공존하는 것을 확인할 수 있습니다.