Nerdy

[Matplotlib] 파이 차트 그리기 본문

Python/[Matplotlib]

[Matplotlib] 파이 차트 그리기

뚱인데요? 2022. 6. 19. 01:19
728x90

matplotlib는 차트를 그리는 시각화 라이브러리 패키지이며 원 그래프 또는 원형 차트라고 부르는 파이 차트를 데이터를 활용하여 만들어보도록 한다.

 

 

# csv 파일 데이터

04-01-2021.csv
0.53MB

 

 

 

'04-01-2021.csv' Data : 전 세계 코로나 확진자 감염수와 발병 지역, 사망 수 등의 수치들이 담긴 데이터


1. 데이터 가져오기

 

pandas의 pd.read.csv 함수를 사용하여 데이터를 가져와 객체에 담는다.

iris = pd.read_csv("ch9_data/iris.csv")
iris

df = pd.read_csv('04-01-2021.csv', na_filter=True)
test1 = pd.DataFrame(df)
test1

 

 

2. 데이터 그룹화

 

코로나 확진 관련 데이터가 담긴 '04-01-2021.csv' 대상으로 파이차트를 그린다.

많은 컬럼들 중 국가('Country_Region') 컬럼과 확진자 수('Confirmed') 컬럼을 대상으로 그룹화를 한 뒤 그룹화 결과 중 첫 10개의 데이터만 시각화를 한다.

# 그룹화
Country_confirmed = test1[['Country_Region', 'Confirmed']]
result = Country_confirmed.groupby("Country_Region")['Confirmed'].sum()


group_result = result.head(10) # 첫 10개 결과만 객체에 담기
group_result


# 편의상 데이터프레임으로 변환 후 컬럼 인덱싱
a = group_result.reset_index() # series -> dataframe으로 결과 그대로 변환

x = a['Country_Region']
y = a['Confirmed']

 

 

3. 파이 차트 그리기

 

파이 차트를 그리기 위해 matplotlib 라이브러리를 import를 해준다.

import matplotlib.pyplot as plt

 

 

옵션들은 다양하여 이 중 몇개의 옵션들을 사용해 조금 더 이쁜 파이 차트를 그려보도록 한다.

colors = ['#ff9999', '#ffc000', '#8fd9b6', '#d395d0'] # Hex code
wedgeprops={'width': 0.7, 'edgecolor': 'w', 'linewidth': 5}

plt.pie(y.head(), labels=x.head(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)
        
        
# y.head() : y축에 들어갈 데이터(10개 중 앞 부분 5개 데이터)

# lables : x축에 들어갈 라벨

# autopct : 부채꼴 안에 표시될 숫자 형식 지정
# -'%.nf%%' 형식으로 넣으며 소수점 한자리는 1, 소주점 두자리는 2, ... 소수점 n자리는 n

# counterclock = False : 시계방향 순서로 부채꼴 영역 표시

# startangle : 부채꼴이 그려지는 시작 각도 설정, Default는 0도

# wedeprops : 부채꼴 영역의 스타일 설정
# - ‘width’, ‘edgecolor’, ‘linewidth’ 키를 이용해서
# - 각각 부채꼴 영역의 너비 (반지름에 대한 비율), 테두리의 색상, 테두리 선의 너비를 설정

# shadow = True : 그림자 표시

 

 

나머지 5개의 데이터도 마찬가지로 위의 코드와 비슷하게 작성하면 되고 스타일을 변경하고 싶으면 옵션명을 조금 수정하면 된다.

plt.pie(y.tail(), labels=x.tail(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)

 

 

그럼 head와 tail의 총 2개 파이차트가 만들어 진다. 두 파이차트를 동시에 나타내고 싶으면 subplot을 넣으면 된다.

subplot에 121 과 122의 뜻은 다음과 같다.

 

121 : 1x2 그리드의 첫번째 plot

122 : 1x2 그리드의 두번째 plot

# head pie chart
plt.subplot(121)
plt.pie(y.head(), labels=x.head(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)
        
# tail pie chart
plt.subplot(122)
plt.pie(y.tail(), labels=x.tail(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)

 

 

두 파이 차트의 구분을 위해 제목, 즉 타이틀을 넣으면 된다.

# head pie chart
plt.subplot(121) # 1번째 plot
plt.title('Country_confirmed Pie Head') # title : head
plt.pie(y.head(), labels=x.head(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)
        
# tail pie chart
plt.subplot(122) # 2번째 plot
plt.title('Country_confirmed Pie Tail') # title : tail
plt.pie(y.tail(), labels=x.tail(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)

 

 

파이 차트 영역마다 어떤 레이블이 들어가져 있는지 표시하는 방법은 범례를 넣으면 된다. 범례를 넣는 함수는 legend 함수이며 범례의 위치를 설정할 수 있는 loc 옵션과 범례 내 글자 사이즈를 조절 할 수 있는 fontsize 옵션이 있다.

# head pie chart
plt.subplot(121) # 1번째 plot
plt.title('Country_confirmed Pie Head') # title : head
plt.pie(y.head(), labels=x.head(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)
plt.legend(loc = 'upper right', fontsize = 9.5) # 범례
        
        
# tail pie chart
plt.subplot(122) # 2번째 plot
plt.title('Country_confirmed Pie Tail') # title : tail
plt.pie(y.tail(), labels=x.tail(), autopct='%.2f%%', startangle=260, counterclock=False,
        colors=colors, wedgeprops=wedgeprops, shadow=True)
plt.legend(loc = 'upper right', fontsize = 9.5) # 범례

 

범례 위치를 설정하는 방법은 upper right 처럼 문자열을 넣어 위치를 조절하거나 숫자 1, 2, 3, 4 또는 최적의 위치를 넣고 싶을 때 best 문자열을 넣으면 자동으로 맞는 위치에 배정을 해준다.

 

 

 

4. 결과

Result of Pie Chart

 

728x90