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

matplotlib 파이 차트 그리기

by 찐남 2022. 2. 26.

Matplotlib 라이브러리는 파이썬에서 그래프를 그릴 때,

가장 많이 사용하는 대표 라이브러리입니다.

 

기본이 되는 여러 그래프 중

이번 포스팅에서는 파이 차트를 실습해 볼게요.

 

앞선 포스팅과 마찬가지로

아래 2가지 기본적인 환경 세팅을 하겠습니다.

① matplotlib 라이브러리 사용 정의

② 그래프에서 환경설정이 가능하도록 폰트 설정

③ 한글 사용이 (-) 부호가 깨지는 현상 방지

 

import matplotlib.pyplot as plt   # matplotlib 라이브러리 load

## 한글 사용 가능하도독 폰트 설정
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic'  # os: window 
matplotlib.rcParams['axes.unicode_minus'] = False  # 한글 폰트 사용 시 (-) 부호 깨짐 현상 해결

이렇게 설정하면,

그래프에 한글과 (-) 부호 사용에 대한 걱정이 없어요.

 

실습을 위해 매우 간단한 데이터를 생성해 볼게요.

실습 데이터는 iris 붓꽃 데이터입니다.

 

아래 파일을 다운받으세요.

iris.csv
0.00MB

### 실습 데이터 생성

## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")

## 칼럼명 확인하기
irisData.columns

## ## 붓꽃 종류별 평균 SepalLength SepalWidth PetalLength PetalWidth 구하기
df = irisData.groupby('Species').mean()

자 이제 기본 그래프부터

몇 가지 옵션을 추가하면서 그려 볼게요.

 

 

파이 차트 기본 그래프 그리기(.pie())

위의 데이터를 이용해서 가장 기본적인 파이 차트 그래프를 그려 볼게요.

## 파이차트 그리기
## 기본
plt.pie(df['SepalLength']) # SepalLength을 이루는 카테고리 비율로 그림 그리기

 

라벨 및 비율 추가

기본 그래프에

라벨과 비율을 추가해 볼게요.

## 라벨 추가
plt.pie(df['SepalLength'], labels = df.index)

## 비율 추가
plt.pie(df['SepalLength'], labels = df.index, autopct = '%.1f%%')

 

그리기 시작점 및 방향 변경

파이 그래프는 그리기의 시작점이

오후 3시 방향이에요.

이 지점을 기준으로 반 시계 방향으로

그리게 됩니다.

옵션을 통해

그리기의 시작점과 방향을

변경할 수 있어요.

## 파이 차트 그리기 시작점 변경
plt.pie(df['SepalLength'], labels = df.index, autopct = '%.1f%%', startangle = 90)

## 파이 차트 그리기 시작점 변경(시계 방향)
plt.pie(df['SepalLength'], labels = df.index, autopct = '%.1f%%', startangle=90, counterclock=False)


 

파이 조각 내기

특정 카테고리를 강조하기 위해

별도 파이 조각으로 구분할 수도 있어요.

구분하고, 추가적으로 범례를 달아볼게요.

## 파이 차트 조각 내기
plt.pie(df['SepalLength'], labels = df.index, autopct = '%.1f%%', explode = [0, 0, 0.2])

## 범례 달기
plt.pie(df['SepalLength'], labels = df.index, autopct = '%.1f%%', explode = [0, 0, 0.2])
plt.legend(loc = (1.2, 0.25), title = '붓꽃 종류')

explode = [0, 0, 0.2]의 의미는

세 번째 카테고리만 0.2 크기만큼 분리하겠다는 뜻입니다.

 

plt.legend(loc = (1.2, 0.25), title = '붓꽃 종류')의 의미는

범례의 위치를 기본 그래프 밖으로

0.2 크기만큼 보내고,

아래서 0.25 크기만큼 위로 보내겠다는 의미입니다.

 

 

파이 스타일 변경하기

파이의 색상을 변경하고,

도넛 모양으로도 변경할 수 있어요.

## 색상 변경하기
plt.pie(df['SepalLength'], 
        labels = df.index, 
        autopct = '%.1f%%',
        explode = [0.05]*3,
        colors = ['#ffadad','#ffd6a5','#fdffb6'])

## 도넛 모양으로 변경하기 1
plt.pie(df['SepalLength'], 
         labels = df.index, 
         autopct = '%.1f%%',        
         explode = [0.05]*3,
         colors = ['#ffadad','#ffd6a5','#fdffb6'],
         wedgeprops = {'width':0.7})

## 도넛 모양으로 변경 후 옵션 추가
plt.pie(df['SepalLength'], 
        labels = df.index, 
        autopct = '%.1f%%',        
        colors = ['#ffadad','#ffd6a5','#fdffb6'],
        wedgeprops = {'width':0.7, 'edgecolor':'w', 'linewidth' : 3})

도넛 모양으로 변경하기 위해서

wedgeprops 옵션을 사용했어요.

(인수를 딕셔너리 형태로 받는다는 점 기억하세요.)

wedgeprops = {'width':0.7}의 의미는

도넛 모양으로 변경하되, 

파이 차트의 전체를 1로 보고

0.7의 면적만큼 도넛 모양으로 그리겠다는 걸로 이해하시면 돼요.

0.1 ~ 1까지 변경하면서 그려 보시면

바로 이해되실 거예요.

그리고, 

'edgecolor':'w', 'linewidth' : 3 옵션은

도넛 테두리 색상을 'white'로 하고,

선 두께를 3으로 표현하겠다는 뜻입니다.

세 번째 그래프를 보시면, 

explode 인수가 제외되면서, 

'linewidth' 옵션으로 동일한 효과를 낸 걸 보실 수 있을 거예요.

 

일정 비율 이상만 비율로 나타내기

또한 일정 비율 이상일 경우에만 비율을 나타낼 수 있습니다.

def customPct(pct) :
    return ('%.1f%%' % pct) if pct >= 30 else ''

plt.pie(df['SepalLength'], 
        labels = df.index, 
        autopct = customPct,        
        explode = [0.05]*3,
        colors = ['#ffadad','#ffd6a5','#fdffb6'],
        wedgeprops = {'width':0.7, 'edgecolor':'w', 'linewidth' : 3})

 

비율을 나타내는 text 위치 조정하기

비율을 나타내는 text의 위치를 조정할 수 있어요.

plt.pie(df['SepalLength'], 
        labels = df.index, 
        autopct = "%0.1f%%",        
        explode = [0.05]*3,
        colors = ['#ffadad','#ffd6a5','#fdffb6'],
        wedgeprops = {'width':0.7, 'edgecolor':'w', 'linewidth' : 1},
        pctdistance = 0.7)

pctdistance = 0.7의 의미는

파이 차트의 중앙으로부터 거리 비율을 나타냅니다.

0에 가까울수록 파이차트 중앙으로 모이게 되고,

1에 가까울 수록 점점 멀어지게 됩니다.

 

 

반응형

댓글