차트레이스 만들기
흥미로운 bar chart race(바 차트 레이스)를 Python 언어를 사용하여 만드는 방법 공유 하고자 합니다.
준비사항
언어: Python
툴: Jupyter 또는 VSCode
데이터CSV 파일
개발
1) bar_chart_race 패키지 설치
pip install bar_chart_race
2) FFmpeg 설치
bar_chart_race를 동영상 파일로 저장하기 위해 FFmpeg 설치.
- 원도우 - Windows builds from gyan.dev 선택
- 안정적인 버전 선택
- 압축을 해제 및 원하시는 위치로 이동
- 환경 변수 셋팅
- 환경변수 버튼 클릭
- 사용자 변수 Path "편집"
- path 편집 확인
bin 폴더를 설정해주고 확인 하면서 마무리.
- cmd 명령 프롬프트 실행
- ffmpeg를 치면 아래와 같이 출력되면 정상 설치.
3) 필요한 패키지
import pandas as pd
import numpy as np
import bar_chart_race as bcr
3) 한글 폰트 설정
한글 깨짐 현상 방지
from matplotlib import font_manager,rc
# 한글 폰트 설정
font_location = 'C:/Windows/Fonts/MALGUNSL.TTF' #맑은고딕
font_name = font_manager.FontProperties(fname=font_location).get_name()
rc('font',family=font_name)
4) 데이터 불러 오기
#필요한 데이터 셋 불러오기
path = "D:\\src\\python\\ChartRace\\bar_test.csv"
baseball = pd.read_csv(path)
df.head()
출력 화면 (jupyter)
5) 데이터 전처리 및 누적 형태로 변경
# 피봇팅
df = baseball.pivot_table(values='win', index = 'season',columns='team')
# NaN값 0으로 바꾸어 주기
df.fillna(0,inplace=True)
df.sort_values(list(df.columns), inplace=True)
df = df.sort_index()
# 누적데이터로 각 축구팀의 데이터 값 바꾸기
df.iloc[:] = df.iloc[:].cumsum()
df.head()
출력 화면
6) 바 차트 레이스 생성
bcr.bar_chart_race(
df=df,
orientation='h', # 그래프 증가 수평 방향(가로그래프) 'h', 수직 방향(세로그래프) 'v'
period_length=1500, # 업데이트 주기(초)
n_bars=10, # 보여줄 막대 개수
title = 'KBO 팀별 누적 승리 순위 (1982-2023)',#타이틀
filter_column_colors=True # 화면에 표시되는 막대에만 색상을 적용
)
7) 전체 코드
#필요한 모듈 불러오기
#!pip install bar_chart_race as bcr
import pandas as pd
import numpy as np
import bar_chart_race as bcr
from matplotlib import font_manager,rc
# 한글 폰트 설정
font_location = 'C:/Windows/Fonts/MALGUNSL.TTF' #맑은고딕
font_name = font_manager.FontProperties(fname=font_location).get_name()
rc('font',family=font_name)
#필요한 데이터 셋 불러오기
# 주의할 점: 주소에 \를 //로 바꿔줄 것!
path = "D:\\src\\python\\ChartRace\\bar_test.csv"
baseball = pd.read_csv(path)
#데이터를 알맞은 포맷으로 변형하기 - 피봇팅
df = baseball.pivot_table(values='win', index = 'season',columns='team')
# NaN값 0으로 바꾸어 주기
df.fillna(0,inplace=True)
df.sort_values(list(df.columns), inplace=True)
df = df.sort_index()
# df.head()
# 누적데이터로 각 축구팀의 데이터 값 바꾸기
df.iloc[:] = df.iloc[:].cumsum()
bcr.bar_chart_race(
df=df,
filename='./test.mp4',
orientation='h', # 그래프 증가 수평 방향(가로그래프) 'h', 수직 방향(세로그래프) 'v'
period_length=1500, # 업데이트 주기(초)
n_bars=10, # 보여줄 막대 개수
title = 'KBO 팀별 누적 승리 순위 (1982-2023)',
filter_column_colors=True # 화면에 표시되는 막대에만 색상을 적용한다.
)
공식 문서
'프로그래밍언어 > Python' 카테고리의 다른 글
이미지라벨 bar chart race 만들기 (0) | 2024.02.08 |
---|---|
아나콘다 설치 방법 (1) | 2024.01.26 |
파이썬 점세개 python ... 의미 (ellipsis) (3) | 2023.11.21 |
FastAPI - APIRouter (API 파일 분리) (0) | 2023.07.12 |
FastAPI 사용법 & 예제 (0) | 2023.06.16 |
댓글