반응형
이번 글에서는 파이썬에서 다중 막대 그래프를 겹치지 않게 그리는 예제 코드를 살펴보도록 하겠습니다.
파이썬 plt 다중 막대 그래프 예제 코드
먼저, 다음과 같은 간단한 연도별 상점별 판매 액수 데이터프레임이 있다고 가정해보겠습니다.
import pandas as pd
a = [135, 117, 91, 86]
b = [112, 133, 151, 162]
c = [96, 108, 99, 104]
year = ['2018', '2019', '2020', '2021']
df = pd.DataFrame({'shop A' : a, 'shop B' : b, 'shop C' : c}, index = year)
df
이제 각 상점을 나타내는 3개의 열을 대상으로 차례대로 막대 그래프를 그려보도록 하겠습니다.
각 코드 줄에 해당하는 자세한 설명은 주석을 참고하시면 됩니다.
import matplotlib.pyplot as plt
import numpy as np
# 그림 사이즈, 바 굵기 조정
fig, ax = plt.subplots(figsize=(12,6))
bar_width = 0.25
# 연도가 4개이므로 0, 1, 2, 3 위치를 기준으로 삼음
index = np.arange(4)
# 각 연도별로 3개 샵의 bar를 순서대로 나타내는 과정, 각 그래프는 0.25의 간격을 두고 그려짐
b1 = plt.bar(index, df['shop A'], bar_width, alpha=0.4, color='red', label='shop A')
b2 = plt.bar(index + bar_width, df['shop B'], bar_width, alpha=0.4, color='blue', label='shop B')
b3 = plt.bar(index + 2 * bar_width, df['shop C'], bar_width, alpha=0.4, color='green', label='shop C')
# x축 위치를 정 가운데로 조정하고 x축의 텍스트를 year 정보와 매칭
plt.xticks(np.arange(bar_width, 4 + bar_width, 1), year)
# x축, y축 이름 및 범례 설정
plt.xlabel('year', size = 13)
plt.ylabel('revenue', size = 13)
plt.legend()
plt.show()
막대 그래프 사이에 빈 공간을 만들고 싶다면 각 plt.bar 내의 첫 번째 인자에 숫자를 조금씩 더해주면서 조정해보면 됩니다.
이 외에 막대 그래프 테두리 설정이나 그래프 위에 값 표시를 하는 방법은 막대 그래프 1개를 그릴 때와 동일한데, 이에 대해서 전문적으로 다루고 있는 포스팅이 따로 있어 링크를 첨부하도록 하겠습니다.
이상으로 다중 막대 그래프를 그리는 간단한 파이썬 matplotlib 예제를 살펴보았습니다.
'Python > Matplotlib' 카테고리의 다른 글
[Matplotlib] seaborn 이용 파이썬 box plot 그리기 (0) | 2021.12.05 |
---|---|
[Matplotlib] seaborn 파이썬 히트맵 그리는 방법 예제 (0) | 2021.11.28 |
[Matplotlib] 파이썬 plt 버블 차트(Bubble plot) 예제 (0) | 2021.11.28 |