본문 바로가기

데이터시각화

matplotlib 을 이용해 여러개의 선 그래프 그리기

 matplotlib 을 이용한 선 그래프를 그릴때 하나의 그래프를 그리는 경우도 있지만 여러개의 선 그래프를 그려서 비교해야 하는 상황도 자주 발생한다. 

 

21년과 22년의 연도별 매출액 비교를 하고자 한다고 해도 2개의 선 그래프를 그려야 할 필요가 생긴다 . 

 

그래서 21년과 22년도 매출액을 비교 할 수 있도록 21년 매출액과 22년도의 매출액을 선 그래프로 그려 비교해 보려고 한다. 

 

우선 21년도의 매출액과 22년도의 매출액 자료를 만들어 그래프를 그릴 준비를 한다.

 

1. 라이브러리 임포트 및 데이터 생성 

import pandas as pd
import matplotlib.pyplot as plt 

df = pd.DataFrame()
# 월 
df['date'] = [str(x)+'월' for x in range(1,13)] 
# 매출액
df['2022sales'] = [300,100,250,320,180,280,520,390,500,370,750,880] 
# 매출액
df['2021sales'] = [200,50,50,120,180,200,320,490,700,470,650,780] 
df

 


 

2. 그래프 그리기 

그리고자 하는 그래프의 수만큼 plot 을 이용하여 그래프를 그려 준다. 그래프가 여러개라서 구분을 할 수 있는 label 을 표시하여 주었다. 

fig = plt.figure(figsize=(9,5))
ax = fig.add_subplot() 

# 오른쪽 숨김
ax.spines['right'].set_visible(False) 
# 위쪽 숨김
ax.spines['top'].set_visible(False) 

# 2021년 매출 그래프 
plt.plot(df['date'], df['2021sales'], marker='o', ms='8', mec='r', mew='2', mfc='w', label='2021')
# 2022년 매출 그래프 
plt.plot(df['date'], df['2022sales'], marker='x', ms='8', mec='b', mew='2', mfc='w', label='2022')

#label 표시
plt.legend()

plt.grid(alpha=0.5)
plt.title('연도별 매출액 ', pad=20, color='purple', fontsize=20) 
plt.xlabel('월', color='b',fontsize=12, labelpad=10)
plt.ylabel('매출', color='b',fontsize=12, labelpad=10)

plt.show()

 

y축의 눈금 범위를 100 단위로 1,000 까지 표시하고 싶고 범례의 모습도 변경 하고자 한다.

# plt.figure(figsize=(9,5))

fig = plt.figure(figsize=(9,5))
ax = fig.add_subplot() 

# 오른쪽 숨김
ax.spines['right'].set_visible(False) 
# 위쪽 숨김
ax.spines['top'].set_visible(False) 

# 2021년 매출 그래프 
plt.plot(df['date'], df['2021sales'], marker='o', ms='8', mec='r', mew='2', mfc='w', label='2021')
# 2022년 매출 그래프 
plt.plot(df['date'], df['2022sales'], marker='x', ms='8', mec='b', mew='2', mfc='w', label='2022')

#label 표시 속성 설정 
plt.legend(ncol=1, fontsize=15, shadow=True, facecolor='ivory',edgecolor='k')

plt.grid(alpha=0.5)
plt.title('연도별 매출액 ', pad=20, color='purple', fontsize=20) 
plt.xlabel('월', color='b',fontsize=12, labelpad=10)
plt.ylabel('매출', color='b',fontsize=12, labelpad=10)

# 축의 범위 지정
plt.ylim(0,1000)

# y축의 눈금 갯수 지정
plt.yticks(range(0,1000,100))

plt.show()

ylim 명령어로 축의 범위를 1,000 까지 설정하고

yticks 명령을 이용 눈금 간격을 100 단위로 설정 하였다. 

 

범례의 속성은 다음과 같이 수정 할 수 있다.

  • 열 개수 : plt.legend(ncol=열개수)
  • 폰트 사이즈 : plt.legend(fontsize=폰트사이즈)
  • 테두리 : plt.legend(frameon=True/False)
  • 음영 : plt.legend(shadow=True/False)
  • 바탕색 : plt.legend(facecolor=색상)
  • 테두리색 : plt.legend(edgecolor=색상)

 

 

그래프를 통해서 비교해 보니

2021년도에 비해서 2022년도는 8월~10월을 제외하고는 매출이 상승한걸 한눈에 확인 할 수 있다.