Skills/Python

Matplotlib: 라인 차트와 파이 차트 그리기

듀공🥕 2024. 4. 6. 19:18

이번 포스트에서 Python의 기본적인 시각화 라이브러리인 Matplotlib를 이용하여 파이 차트를 그려볼 예정이다.

 

사용할 예제 데이터는 다음과 같다.

  1. 연도별 외식 소비
  2. 요일별 외식 소비

두 테이블을 가지고 라인 차트와 파이 차트를 만들어보고자 한다.

day.csv
0.00MB
year.csv
0.00MB

 

 

1. 라이브러리 실행

작업에 필요한 라이브러리를 실행해준다.

그리고 본격적으로 시작하기 전 필요한 작업들을 수행해준다. (경고 메세지 무시, 한글 깨짐 방지)

# 필요한 패키지 실행하기.
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

# 경고 메세지 무시하기.
import warnings
warnings.filterwarnings('ignore')

# 한글 깨짐 방지를 위해 'AppleGothic' 지정해주기.
plt.rcParams['font.family'] = 'AppleGothic'
matplotlib.rcParams['axes.unicode_minus'] = False

 

2. 테이블 불러오기

Pandas를 통해 시각화에 필요한 테이블들을 불러와준다.

# 예제 테이블 불러오기.
year = pd.read_csv('/Users/choisubin/Desktop/SubinChoi/DA/resultTable/year.csv', encoding='UTF8')
day = pd.read_csv('/Users/choisubin/Desktop/SubinChoi/DA/resultTable/day.csv', encoding='UTF8')

# 예제 테이블 출력하기.
print("연도별 외식 소비에 대한 카드 이용건수와 이용금액의 합계 \n", year)
print("요일별 외식 소비에 대한 카드 이용건수와 이용금액의 합계 \n", day)

 

예제 테이블은 다음과 같은 형태이다.

이전 포스트에서 사용한 테이블보다 비교적 간단한 구조를 가지고 있다.

 

3. 라인 차트

라인 차트는 바 차트에 비해 수월하게 생성이 가능하다.

각 코드에 설명을 추가해 두었으며, 해당 코드에 대한 그래프는 아래와 같다.

  • plt.gca().get_yticks() ▶ 눈금 정보 추출
  • set_yticklabels ▶ y축에 천단위씩 콤마 표시
# 1) 연도별 외식 소비 경향
# 그래프 크기 지정하기.
plt.figure(figsize=(10,6))
# x,y축 데이터 입력, marker를 통해 마커 모양 지정하기.
plt.plot(year['연도'], year['카드이용건수 합계'], color='#083d77', marker='o')
# x,y축 라벨 입력하기.
plt.xlabel('연도별')
plt.ylabel('카드이용건수 합계')
# x,y축 범위 지정하기.
plt.xlim([2016, 2022])
plt.ylim([1000000, 4000000])
# 그래프 그리드 설정하기.
plt.grid(color='0.8')
# 지수 표현 형식(scientific notation) 제거 및 천단위 콤마 찍기.
current_values = plt.gca().get_yticks()
plt.gca().set_yticklabels(['{:,.0f}'.format(x) for x in current_values])
# 그래프 제목 설정하기.
plt.title('연도별 외식 소비 경향', fontsize=15)
plt.show()

# 2) 요일별 외식 소비 경향
plt.figure(figsize=(10,6))
plt.plot(day['요일(DAW)'], day['카드이용건수 합계'], color='#254441', marker='o')
plt.xlabel('요일별')
plt.ylabel('카드이용건수 합계')
plt.ylim([1000000, 3000000])
plt.grid(color='0.8')
current_values = plt.gca().get_yticks()
plt.gca().set_yticklabels(['{:,.0f}'.format(x) for x in current_values])
plt.title('요일별 외식 소비 경향', fontsize=15)
plt.show()

 

📊 결과 그래프

위 코드를 실행하면 다음과 같은 그래프가 생성된다.

 

4. 파이 차트

파이 차트는 생성 전에 컬러 리스트와(myColors) 부채꼴이 퍼지는 정도를(explodes) 미리 변수로 설정하였다.

  • explode ▶ 부채꼴이 중심으로부터 멀어지는 정도 설정
  • autopct ▶ '%.1f' 소수 첫째자리까지 표시, '%.2f' 소수 둘째자리까지 표시, '%.1f%%' 퍼센트 포함
# 1) 연도별 외식 소비 경향
myColors = ['#e76f51', '#f4a261', '#e9c46a', '#2a9d8f', '#264653']
explodes = [0, 0, 0, 0.05, 0]
# statangle = 시작 각도 설정, counterclock = 시계 방향으로 설정
# explode = 특정값이 중심에서 벗어나는 정도 설정, autopct = 그래프에 표시될 숫자 형식 지정
plt.pie(year['카드이용건수 합계'], labels=year['연도'], autopct='%.1f%%',
        explode=explodes, startangle=90, counterclock=False, colors=myColors)
plt.title('연도별 외식 소비 경향', fontsize=12)
plt.show()

# 2) 요일별 외식 소비 경향
myColors = ['#ffadad', '#ffd6a5', '#fdffb6', '#caffbf', '#9bf6ff', '#a0c4ff', '#bdb2ff']
explodes = [0, 0, 0, 0, 0, 0.05, 0]
plt.pie(day['카드이용건수 합계'], labels=day['요일(DAW)'], autopct='%.1f%%',
        explode=explodes, startangle=90, counterclock=False, colors=myColors)
plt.title('요일별 외식 소비 경향', fontsize=12)
plt.show()

 

📊 결과 그래프

위 코드를 실행하면 다음과 같은 그래프가 생성된다.

 

 

🔗 관련 링크

지수 표현 제거 및 천단위 콤마 표시 - https://whiplash-bd.tistory.com/41

Matplotlib marker 종류 - https://streamls.tistory.com/entry/Python-matplotlib-%EB%A7%88%EC%BB%A4marker

728x90