지난번 포스팅에서는
막대그래프에 도형(원)을 추가하여
자료의 특정 정보에 대해
강조해야 하는 방법에 대해서
알아보았는데요.
이번 포스팅에서는 화살표를 추가하여
강조하는 방법에 대해
알아보겠습니다.
해당 함수는
matplotlib.patches.FancyArrowPatch
입니다.
1. FancyArrowPatch의 주요 인수
matplotlib.patches.FancyArrowPatch를 구성하는
주요 인수는 아래와 같습니다.
# 주요 인수
matplotlib.patches.FancyArrowPatch((first_x, first_y), # 화살표의 꼬리 지점 좌표(x, y)
(last_x, last_y), # 화살표의 머리 지점 좌표(x, y)
mutation_scale, # 화살표 머리 크기
**kwargs # 그 밖의 인수들)
2. FancyArrowPatch의 그 밖의 인수들
특히, 그 밖의 인수들 중
주요 인수는 아래와 같습니다.
# 그 밖의 인수들 중 주요 인수
1. alpha
- 0 ~ 1 사이의 값으로 타원의 투명도를 나타냄
- 숫자가 커질수록 투명도가 낮아짐
2. edgecolor
- 타원 테두리의 색상 지정
3. facecolor
- 타원 채우기의 색상 지정
4. fill
- 타원의 색상 채우기 여부(bool)
5. linestyle
- 타원의 테두리 스타일 지정
3. 사용 예제
지난번 포스팅에서 사용했던
도형이 추가된 그래프 강조 예제를 기준으로
실제 어떻게 사용하는지
예제를 통해서
알아보도록 하겠습니다.
우선, 필수 라이브러리를 로딩합니다.
## 기본 라이브러리 세팅
import matplotlib.pyplot as plt
import pandas as pd
## 한글 사용 가능하도독 폰트 설정
# window
import matplotlib matplotlib.rcParams ['font.family'] = 'Malgun Gothic'
# 한글 폰트 사용 시 (-) 부호 깨짐 현상 해결
matplotlib.rcParams ['axes.unicode_minus'] = False
# 타원 그래프 삽입을 위한 모듈 로딩
import matplotlib.patches as patches
위에 링크되어 있는 실습 자료를 기준으로
막대 그래플 그려 볼게요.
## 기초 데이터
x = ['2.21일', '2.22일', '2.23일', '2.24일']
y = [99573, 171452, 90016, 85890]
## 가장 빈도수가 높은 날짜에 타원 그래프 추가하기
plt.bar(x, y)
plt.ylim([min(y) - 10000, max(y) + 30000])
for i, txt in enumerate(y) :
if txt == max(y):
plt.text(i, txt + 1500, txt, ha = 'center', color = 'red', size = 15)
ellipse = patches.Ellipse((i,txt),
width = 1.5,
height = txt/4,
color = 'red',
fill = False,
linestyle = 'dashed',
linewidth = 2,
alpha = 1)
plt.gca().add_patch(ellipse)
else:
plt.text(i, txt + 1500, txt, ha = 'center')
이제 화살표를 추가하여 전일 대비
빈도수가 가장 많이 증가한 날의 변화를
화살표로 표현해 보도록 하겠습니다.
plt.bar(x,y)
plt.ylim([min(y) - 10000, max(y) + 30000])
for i, txt in enumerate(y) :
if txt == max(y):
plt.text(i, txt + 1500, txt, ha = 'center', color = 'red', size = 15)
ellipse = patches.Ellipse((i,txt),
width = 1.5,
height = txt/4,
color = 'red',
fill = False,
linestyle = 'dashed',
linewidth = 2,
alpha = 1)
plt.gca().add_patch(ellipse)
else:
plt.text(i, txt + 1500, txt, ha = 'center')
## 2.21일 대비 2.22일 증가 수준을 화살표로 표현
arrow = patches.FancyArrowPatch((0,110000), # 화살표의 x 좌표
(0.5,170000), # 화살표의 y 좌표
mutation_scale = 40,
color = 'green',
fill = True,
alpha = 0.8)
plt.gca().add_patch(arrow)
plt.show()
이상 화살표를 추가하는 방법에 대해서
알아보았습니다.
반응형
'Python > 데이터 시각화' 카테고리의 다른 글
단순한 3단계 프로세스로 Matplotlib 차트 개선 (0) | 2022.07.27 |
---|---|
Seaborn 라이브러리를 활용한 시각화 Best 8 (0) | 2022.05.28 |
막대그래프에 도형(타원) 삽입하기 (0) | 2022.04.16 |
워드 클라우드(Word Cloud) 생성하기(with 파이썬 DataFrame) (0) | 2022.02.28 |
matplotlib 산점도 그리기 (0) | 2022.02.27 |
댓글