pbj0812의 코딩 일기

[python] 연령 별 연봉 그래프 그리기 본문

ComputerLanguage_Program/PYTHON

[python] 연령 별 연봉 그래프 그리기

pbj0812 2022. 2. 24. 01:02

0. 목표

 - 연령 별 연봉 그래프 그리기

 

1. 실습하기

 1) library 호출

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

 2) 그림 그리기

  - 가로축은 연령대, 세로축은 연봉, 색은 해당하는 인구수를 나타냄.

data_x = ['20대', '30대', '40대', '50대', '60세 이상']
data_y = [3000, 4500, 5000, 4700, 3400]
people = [380, 400, 350, 250, 100]

fig, ax = plt.subplots(figsize=(15, 10))

# 바 차트
ax.bar(data_x, data_y, color = colors)
ax.grid(True, axis = 'y')
ax.set_axisbelow(True)

# 칼라바
my_cmap = plt.cm.get_cmap('PuBuGn')
colors = my_cmap(data_color)
data_color = [x / max(people) for x in people]
CS = plt.contourf([people, data_color], cmap = my_cmap)
cbar = plt.colorbar(CS)
ticklabs = cbar.ax.get_yticklabels()
cbar.ax.set_yticklabels(ticklabs, fontsize=15)
cbar.set_label('인구수(만명)', rotation = 270, labelpad = 15, fontsize = 20)

# 축 제목
ax.set_ylabel('평균연봉(만원)', fontsize = 20)
ax.set_xlabel('연령대', fontsize = 20)

# tick
ax.tick_params(axis = 'x', labelsize = 15)
ax.tick_params(axis = 'y', labelsize = 15)

# 텍스트 붙이기
for i in range(len(data_y)):
    ax.text(i, data_y[i] + 50, data_y[i], 
            verticalalignment = 'center' , horizontalalignment = 'center' , fontweight='bold', fontsize = 15)

2. 참고

 - 12. Matplotlib 그리드 설정하기

 - Choosing Colormaps in Matplotlib

 - Change fontsize of colorbars in matplotlib

 - Python: Barplot with colorbar

Comments