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

[파이 차트(Pie chart)] 5. Matplotlib을 이용하여 파이차트 꾸미기 - 범례 표시하기

by 부자 꽁냥이 2020. 7. 28.

안녕하세요. 꽁냥이에요!!

 

파이 차트는 원 그래프, 원형 차트라고도 하며 카테고리별 통계치의 비율을 직관적으로 보고 싶을 때 많이 사용하는 그래프입니다.

 

이번 포스팅에서는 파이 차트를 그릴 때 범례를 표시하는 방법에 대해서 알아보겠습니다.


pie함수는 기본적으로 labels라는 인자를 사용하여 라벨을 출력할 수 있습니다. 아래 코드를 실행해보세요.

 

import matplotlib.pyplot as plt
import numpy as np

## 데이터 준비
labels = ['Apple','Banana','Grape','Pear','Peach'] ## 라벨
frequency = [120,120,380,240,200] ## 빈도

fig = plt.figure(figsize=(8,8)) ## 캔버스 생성
fig.set_facecolor('white') ## 캔버스 배경색을 하얀색으로 설정
ax = fig.add_subplot() ## 프레임 생성

ax.pie(frequency, ## 파이차트 출력
       labels=labels, ## 라벨 출력
       startangle=90, ## 시작점을 90도(degree)로 지정
       counterclock=False, ## 시계 방향으로 그린다.
       autopct=lambda p : '{:.2f}%'.format(p) ## 퍼센티지 출력
       )

plt.show()

 

실행 결과

 

보시는 바와 같이 라벨이 원 바깥쪽에 출력이 된 것을 확인할 수 있어요. 하지만 사람에 따라서는 원 바깥에 라벨을 출력하기 보다 한 곳에 라벨을 정리하는 것이 더 깔끔할 수 있을거예요. 즉, 범례로 표시하는 것이 더 나을텐데요.

 

Matplotlib에서 범례는 legend함수를 이용하여 출력할 수 있어요. 아래 코드에서 19번째 줄에 plt.legend()를 추가하여 범례가 출력되도록 했습니다.

 

import matplotlib.pyplot as plt
import numpy as np

## 데이터 준비
labels = ['Apple','Banana','Grape','Pear','Peach'] ## 라벨
frequency = [120,120,380,240,200] ## 빈도

fig = plt.figure(figsize=(8,8)) ## 캔버스 생성
fig.set_facecolor('white') ## 캔버스 배경색을 하얀색으로 설정
ax = fig.add_subplot() ## 프레임 생성

ax.pie(frequency, ## 파이차트 출력
       labels=labels, ## 라벨 출력
       startangle=90, ## 시작점을 90도(degree)로 지정
       counterclock=False, ## 시계 방향으로 그린다.
       autopct=lambda p : '{:.2f}%'.format(p) ## 퍼센티지 출력
       )

plt.legend() ## 범례 표시
plt.show()

 

아래 그림은 위 코드를 실행한 결과입니다.

 

실행 결과

 

보시는 바와 같이 우측 상단에 범례가 출력된 것을 확인할 수 있어요. 하지만 원 바깥쪽에 라벨을 그대로 출력 되었는데요. 원 바깥쪽 라벨을 지우고 범례만 출력하고 싶을 때는 어떻게하면 될까요? 아래 코드를 살펴볼게요.

 

import matplotlib.pyplot as plt
import numpy as np

## 데이터 준비
labels = ['Apple','Banana','Grape','Pear','Peach'] ## 라벨
frequency = [120,120,380,240,200] ## 빈도

fig = plt.figure(figsize=(8,8)) ## 캔버스 생성
fig.set_facecolor('white') ## 캔버스 배경색을 하얀색으로 설정
ax = fig.add_subplot() ## 프레임 생성

pie = ax.pie(frequency, ## 파이차트 출력
       startangle=90, ## 시작점을 90도(degree)로 지정
       counterclock=False, ## 시계 방향으로 그린다.
       autopct=lambda p : '{:.2f}%'.format(p) ## 퍼센티지 출력
       )

plt.legend(pie[0],labels) ## 범례 표시
plt.show()

 

line 12

먼저 원 바깥쪽의 라벨을 표시하지 않기 위해 기존의 labels 인자는 지웠습니다. 그리고 legend함수에 파이조각 정보를 넘기기 위하여 pie라는 변수에 ax.pie가 리턴하는 값을 담았어요.

 

line 18

legend함수에는 기본적으로 그래프 요소와 범례에 표시할 라벨을 넣어줘야 하는데요. 그래프 요소는 pie변수의 첫번째 값에 있기 때문에 pie[0]을 legend함수의 첫번째인자에 넣어줬고요. 그리고 두번째 인자에는 라벨 정보가 담긴 labels를 넣었습니다. 범례에 대한 설명은 여기를 참고하시면 꽁냥이가 자세하게 설명해놓았습니다.

 

위 코드를 실행해보세요.

 

실행 결과

 

원 바깥쪽 라벨은 사라지고 범례만 표시된 것을 알 수 있어요.


이번 포스팅에서는 파이 차트에서 범례를 표시하는 방법에 대하여 알아보았습니다. 보다가 궁금한 점, 잘못된 점, 하고 싶은 말은 댓글로 남겨주세요.

 

지금까지 꽁냥이의 글 읽어주셔서 감사합니다.


댓글


맨 위로