Notice
Recent Posts
Recent Comments
Link
250x250
develope_kkyu
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 5 본문
728x90
https://developerkkyu37.tistory.com/73
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 4
https://developerkkyu37.tistory.com/72 [Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 3 https://developerkkyu37.tistory.com/70 [Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 2 https://developerkkyu37.tistory.com/69
developerkkyu37.tistory.com
라인스코어도 만들었고 이제 각 팀의 기록 몇개를 시각화해서 비교할 수 있는 그래프를 만들고 싶었다. 네이버 스포츠 야구 기록을 보면 밑에 사진처럼 되있는데 이렇게 만들어보고 싶었다.
matplotlib를 사용했다.
import matplotlib.pyplot as plt
statsapi.boxscore_data를 사용해 그래프에 쓸만한 데이터를 찾아보니 안타, 홈런, 도루, 삼진, 잔루가 있었다.
boxscore = statsapi.boxscore_data(game_id)
away_hits = boxscore['away']['teamStats']['batting']['hits']
away_hrs = boxscore['away']['teamStats']['batting']['homeRuns']
away_stolen = boxscore['away']['teamStats']['batting']['stolenBases']
away_so = boxscore['away']['teamStats']['batting']['strikeOuts']
away_lob = boxscore['away']['teamStats']['batting']['leftOnBase']
home_hits = boxscore['home']['teamStats']['batting']['hits']
home_hrs = boxscore['home']['teamStats']['batting']['homeRuns']
home_stolen = boxscore['home']['teamStats']['batting']['stolenBases']
home_so = boxscore['home']['teamStats']['batting']['strikeOuts']
home_lob = boxscore['home']['teamStats']['batting']['leftOnBase']
a = ['안타', '홈런', '도루', '삼진', '잔루']
b = np.array([away_hits, away_hrs, away_stolen, away_so, away_lob])
c = np.array([home_hits, home_hrs, home_stolen, home_so, home_lob])
subplots로 2개의 그래프의 y값을 하나만 보여주고 한쪽 그래프를 대칭시켜서 표현했다.
y = np.arange(c.size)
fig, axes = plt.subplots(ncols=2, sharey=True)
axes[0].barh(y, b, align='center', color='navy', zorder=10)
axes[0].set(title=away_h)
axes[1].barh(y, c, align='center', color='navy', zorder=10)
axes[1].set(title=home_h)
axes[0].invert_yaxis()
axes[0].set(yticks=y, yticklabels=a)
axes[0].yaxis.tick_right()
axes[0].set_xlim([0,25])
axes[1].set_xlim([0,25])
axes[0].invert_xaxis()
axes[0].spines['top'].set_visible(False)
axes[0].spines['right'].set_visible(False)
axes[0].spines['left'].set_visible(False)
axes[0].spines['bottom'].set_visible(False)
axes[1].spines['top'].set_visible(False)
axes[1].spines['right'].set_visible(False)
axes[1].spines['left'].set_visible(False)
axes[1].spines['bottom'].set_visible(False)
fig.set_figheight(2)
fig.tight_layout()
fig.subplots_adjust(wspace=0.165)
st.pyplot(fig)
matplotlib는 한글이 깨져나오는 현상이 있어서 폰트를 정해주어야한다.
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/MALGUN.TTF"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
잘 나온다.
728x90
'Python' 카테고리의 다른 글
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 7 (0) | 2023.03.12 |
---|---|
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 6 (0) | 2023.03.06 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 4 (0) | 2023.02.27 |
[Python] MLB-StatsAPI를 이용한 mlb 기록 사이트 만들기 - 3 (0) | 2023.02.26 |
[오류 해결] TypeError: unsupported operand type(s) for &: ‘str’ and ‘str’ (0) | 2023.02.19 |