본문 바로가기
Python/Data Visualization

[gca() 함수] 그래프에 패치(타원, 사각형 등) 그리기

by ISLA! 2023. 8. 24.

gca() 함수

 

  • 그래프로 시각화하다보면, 이상치로 의심되는 부분을 표시하거나
  • 경향성을 선이나, 사각형, 원(타원) 등으로 표시하고 싶다. 그때 사용하는 것이 gca() 함수이다
  • 현재 활성화된 Figure에 대응하는 Axes 객체를 반환 :  "gca"는 "get current axes"의 약어

 

예제 상황과 코드

 

  • 버스 운행 거리가 1000이하이면서 운행 시간이 1000이상일 때 운행 거리에 비례하여 운행 시간이 증가하지 않는 것을 확인함
  • 따라서 직사각형으로 이 구간을 표시함으로써 해당 구간이 이상치인지 조금 더 명확하게 확인할 예정
  • plt.gca().add_patch() : 현재 그래프에 새로운 패치(patch)를 추가
    • 패치는 그래프에 도형을 그리는 데 사용됨
    • patches.Rectangle()은 사각형 패치를 생성하는 함수
    • 현재 그래프에 (0, 1000) 좌표를 왼쪽 하단 모서리로 하고, 너비가 1000이고 높이가 2000인 테두리만 있는 사각형을 추가

 

import matplotlib.patches as patches
​
x = train['distance']
y = train['next_arrive_time']
​
plt.figure(dpi = 150)
​
plt.title('거리 vs 운행시간')
plt.xlabel('거리')
plt.ylabel('운행시간')
​
plt.scatter(x,y, alpha = 0.3)
​
# 이상치 표시하기 - 직사각형
plt.gca().add_patch(
    patches.Rectangle(
        (0, 1000),
        1000, 2000,               
        edgecolor = 'deeppink',
        fill=False,
    ))
​
plt.show()

 

추가 예제 : 그래프에 타원 그리기(경향성 시각화)

 

temp = train[(train['distance'] > 1000) & (train['next_arrive_time'] < 1000)]
​
x = temp['distance']
y = temp['next_arrive_time']
​
plt.figure(dpi = 150)
plt.scatter(x,y, alpha = 0.3)
​
# 운행시간 분포 표시하기 - 타원
plt.gca().add_patch(
   patches.Ellipse(
      (4000, 600),
      8000, 800,               
      edgecolor = 'deeppink',
      fill=False,
      angle=3
   ))
​
plt.show()

 

 

 

 

728x90