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

막대그래프에 도형(타원) 삽입하기

by 찐남 2022. 4. 16.

파이썬의 matplotlib 라이브러리를 이용하여

자료를 그래프로 표현한 경우, 

특정 정보에 대해 강조해야 하는 상황이 

자주 발생하게 되는 데요.

이 경우 도형을 삽입하면,

아주 효과적입니다.

 

이번 포스팅에서는 

막대그래프에 타원을 삽입하여 

자료의 강조를 나타내 보도록 할게요.

 

타원을 삽입하기 위한 메서드는 바로

matplotlib.patches.Ellipse

입니다.

 

 

 

 

 

 

 

1. Ellipse의 주요 인수

matplotlib.patches.Ellipse를 구성하는

주요 인수는 

아래와 같습니다.

# 주요 인수
matplotlib.patches.Ellipse(xy,         # 타원의 중심 좌표
                                 width,     # 타원의 가로길이
                                 height,    # 타원의 세로 길이
                                 angle=0,  # 회전각도
                                 **kwargs) # 그 밖의 인수들

 

2. Ellipse의 그 밖의 인수들

특히, 그 밖의 인수들 중 

주요 인수는 아래와 같습니다.

# 그 밖의 인수들 중 주요 인수
1. alpha
  - 0 ~ 1사이의 값으로 타원의 투명도를 나타냄
  - 숫자가 커질수록 투명도가 낮아짐

2. edgecolor
  - 타원 테두리의 색상 지정

3. facecolor
  - 타원 채우기의 색상 지정

4. fill
  - 타원의 색상 채우기 여부(bool)

5. linestyle
  - 타원의 테두리 스타일 지정

6. linewidth
  - 타원의 테두리 두께 지정

 

3. 사용 예제

지난 번 포스팅에서 사용했던

그래프 예제를 기준으로

실제 어떻게 사용하는지

예제를 통해서

알아보도록 하겠습니다.

 

막대그래프 그리기의 기본 문법과

사용 예제는 아래 포스팅을

참고해 주세요.

 

 

matplotlib 막대그래프 그리기

이번 포스팅에서는 Matplotlib 라이브러리의 기본 그래프 중에서 막대그래프를 그려 볼게요. 지난번 포스팅과 마찬가지로 본격적인 작업에 앞서 기본적인 환경 세팅을 하겠습니다. ① matplotlib 라

zzinnam.tistory.com

 

 

 

 

 

 

 

우선, 필수 라이브러리를 로딩합니다.

## 기본 라이브러리 세팅
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')
    # 빈도수가 가장 높은 구간 이외에는 기본값 설정
    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')

 

다음 포스팅에서는

전일 대비 증가 수준이 높음을

화살표를 삽입하여

표현하는 방법에 대해서 알아보겠습니다.

 

 

 

 

 

 

 

반응형

댓글