일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- API
- kepler
- 라이엇api
- 라이엇
- 파이썬
- 공공데이터포털
- 인코등
- geopandas에러
- r
- 마커클러스터
- 오픈API
- pipwin
- 시각화
- map
- geopandas설치
- 코로나
- covid
- riotapi
- 막대그래프
- 에러
- OSMnx
- matplotlib
- Folium
- geopnadas
- 오류
- 지도
- kepler.gl
- covid19
- QGIS라벨링
- Today
- Total
Nerdy
[Matplotlib] 파이 차트 그리기 본문
matplotlib는 차트를 그리는 시각화 라이브러리 패키지이며 원 그래프 또는 원형 차트라고 부르는 파이 차트를 데이터를 활용하여 만들어보도록 한다.
# csv 파일 데이터
'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. 결과
'Python > [Matplotlib]' 카테고리의 다른 글
[Matplotlib] 천단위 콤마(,) 표시와 그래프 레이블 값 표시하기 (0) | 2022.06.25 |
---|---|
[Matplotlib] 코로나 사망자 주간 발생 추이 막대 그래프 그리기 (0) | 2022.06.24 |
[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 2 (0) | 2022.06.20 |
[Matplotlib] 젤렌스키 대통령 연설문 Wordcloud 만들기 - 1 (0) | 2022.06.20 |
[Matplotlib] 산점도 그래프(Scatter plot) 그리기 (0) | 2022.06.20 |