pbj0812의 코딩 일기

[PYTHON] 국내 프로야구 역대 관중 수 그리기 본문

ComputerLanguage_Program/PYTHON

[PYTHON] 국내 프로야구 역대 관중 수 그리기

pbj0812 2021. 12. 17. 01:42

0. 목표

 - 국내 프로야구 역대 관중 수 그리기

1. 실습

 1) library 호출

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
from matplotlib import rc
rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
from matplotlib.patches import Ellipse, Polygon

 2) 데이터 만들기

  - crowdf2 는 그림자 효과를 위함

year = [i for i in range(1999, 2019, 1)]
year2 = []
for i in year:
    year2.append(str(i)[2:])
    
crowd = [3221, 2508, 2991, 2395, 2723, 2332, 3388, 3040, 4104, 5256, 5925, 5929, 6810, 7156, 6442, 6510, 7361, 8340, 8401, 8074]

df = pd.DataFrame({'year' : year2, 'crowd' : crowd})
df['crowd2'] = df['crowd'] - 70

 3) 코드

fig, ax = plt.subplots()
# 피규어 크기
fig.set_size_inches(15, 8)
# 그림자
ax.plot(df['year'], df['crowd2'], linewidth = 4, alpha = 0.5, color = 'gray')
# 라인 그리기
ax.plot(df['year'], df['crowd'], linewidth = 4, color = '#1D2238')
# 산점도
ax.scatter(df['year'], df['crowd'], linewidth = 4, color = '#1D2238', marker = 'o', s = 500)
# ylim 지정
ax.set_ylim([0, 9000])
# x 그리드
ax.grid(True, axis = 'y')
# 제목
ax.set_title('국내 프로야구 역대 관중 수 (1999 - 2018)', fontsize = 20, fontweight='bold')
# 텍스트로 년도 적기
for i in range(len(df['year'])):
    ax.text(df['year'][i], df['crowd'][i], df['year'][i], color = 'white', verticalalignment = 'center' , horizontalalignment = 'center' , fontweight='bold', fontsize = 15)
# x 축 비가시화
ax.tick_params(bottom = False, labelbottom = False)
# , 로 천 단위 변경
ax.get_yaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
# y tick 크기
ax.tick_params(axis = 'y', labelsize = 15)
# 바깥 라인 지우기 / 조작
ax.spines['left'].set_linewidth(0)
ax.spines['top'].set_linewidth(0)
ax.spines['right'].set_linewidth(0)
ax.spines['bottom'].set_linewidth(1)
ax.spines['bottom'].set_color('#BFBFBF')
# 영역 그래프 그리기
ax.add_patch(Polygon([
    (df['year'][14], df['crowd'][13]), 
    (df['year'][15], df['crowd'][14]), 
    (df['year'][16], df['crowd'][15]),
    (df['year'][17], df['crowd'][16]),
    (df['year'][17],0), 
    (df['year'][14],0)], hatch='/', facecolor='g', alpha = 0))

2. 출처

 - Hatch demo

 - [파이썬 matplotlib] 그래프 텍스트 정렬하기

 - 파이썬 matplotlib에서 쉼표를 사용하여 축 번호 형식을 천 단위로 어떻게 포맷합니까?

 - Handling Plot Axis Spines in Python

 - 맥에서 matplotlib 한글 문제 해결하기

Comments