본문 바로가기
데이터 분석/시각화

[Matplotlib] ConnectionPatch에 대해서 알아보자.

by 부자 꽁냥이 2022. 10. 23.

안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 Matplotlib에서 제공하는 ConnectionPatch에 대하여 알아볼 거예요. 


   ConnectionPatch 사용법

1) ConnectionPatch? 그게 뭐야?

ConnectionPatch 클래스는 간단히 말해 서로 다른 좌표 축 상에 있는 점을 연결할 때 사용됩니다.

 

서로 다른 좌표 축에 있는 두 점을 연결하고 싶을 때 ConnectionPatch를 사용할 수 있다.


2) ConnectionPatch 사용법

ConnectionPatch 사용법은 다음과 같습니다.

 

ConnectionPatch( xyA, xyB, coordsA, coordsB, axesA, axesB, . . . ) 

 

xyA, xyB는 두 좌표 축의 x, y좌표이고 coordsA, coordsB는 좌표 인식 방법인데 보통 'data'를 많이 사용합니다. 'data'라는 것은 해당 좌표 축의 x, y 좌표 스케일을 그대로 따르겠다는 것입니다. 이 외에도 여러 가지 좌표 인식 방법이 있는데 이에 대한 내용은 여기에 들어가셔서 Property Description 테이블을 참고해주세요. 마지막으로 axesA, axesB는 각각 xyA, xyB가 속하는 axes를 지정하는 것입니다.


3) 실제로 써보기

아래 코드는 ConnectionPatch를 실제로 사용해본 예제입니다.

 

import numpy as np
import matplotlib.pyplot as plt

from matplotlib.patches import ConnectionPatch

## 데이터 생성
x1 = np.linspace(0, 1, 10)
y1 = np.linspace(0, 1, 10)

x2 = np.linspace(0, 10, 10)
y2 = np.linspace(0, 10, 10)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
fig.set_facecolor('white')

## 두 좌표 축에 선 그림 그리기
ax1.plot(x1, y1, color='k', marker='o')
ax2.plot(x2, y2, color='b', marker='o')

## 이어주고 싶은 두개 점
xyA = (x1[1], y1[1])
xyB = (x2[4], y2[4])

coordsA = 'data'
coordsB = 'data'

con = ConnectionPatch(xyA, xyB, coordsA, coordsB, axesA=ax1, axesB=ax2,
                      arrowstyle='<->', linestyle='--', color='red'
                     )
ax2.add_artist(con) ## 또는 fig.add_artist(con)
plt.show()

 

line 27~30

먼저 ConnectionPatch를 정의합니다. 이때 화살표를 넣어주기 위해 arrowstyle 인자, 라인 스타일과 색상을 지정하기 위해 각각 linestyle, color 인자에 적절한 값을 넣어주었습니다(line 27~29). 그리고 add_artist 메서드를 통하여 앞에서 정의한 ConnectionPatch 클래스를 등록합니다(line 30).

 

코드를 실행하면 아래 그림에서 빨간 점선과 같이 두 점을 잘 이어주는 것을 확인할 수 있습니다.


댓글


맨 위로