파이썬/시각화 matplot
데이터의 크기를 비교하는 막대그래프
Merware
2023. 5. 16. 09:35
[학습목표]
막대그래프를 그리고, 막대그래프의 여러가지 옵션을 지정할 수 있다.
import pandas as pd
import matplotlib.pyplot as plt
# 그래프에 한글 설정
plt.rc('font',family='Malgun Gothic')
# 그래프에 마이너스 기호 깨지는 문제 해결
plt.rcParams['axes.unicode_minus'] = False
샘플데이터
- 어느 두 매장의 요일별 평균 매출액
df1 = pd.DataFrame({'요일':['월','화','수','목','금','토','일'],
'매출액':[10000,9000,11000,8000,13000,15000,14000]})
df1
"""
요일 매출액
0 월 10000
1 화 9000
2 수 11000
3 목 8000
4 금 13000
5 토 15000
6 일 14000
"""
df2 = pd.DataFrame({'요일':['월','화','수','목','금','토','일'],
'매출액':[9000,9500,13000,7000,12000,14000,11000]})
df2
"""
요일 매출액
0 월 9000
1 화 9500
2 수 13000
3 목 7000
4 금 12000
5 토 14000
6 일 11000
막대그래프
- plt.bar(x축데이터,y축데이터)
- plt.barh(x축데이터,y축데이터)
세로 막대 그래프
plt.bar(df1['요일'],df1['매출액'])
가로 막대 그래프
plt.barh(df1['요일'],df1['매출액'])
막대 폭 지정
세로 막대 그래프
- width = 0~1사이의 실수(default:0.8)
plt.bar(df1['요일'],df1['매출액'], width=0.4)
가로막대 그래프
- height = 0~1사이의 실수(default:0.8)
plt.barh(df1['요일'],df1['매출액'],height=0.4)
막대 색상 지정
plt.bar(df1['요일'],df1['매출액'], width=0.4, color='r')
막대마다 다른 색 지정
- ['r','orange','y','g','b','navy','violet']
plt.bar(df1['요일'],df1['매출액'], width=0.4, color=['r','orange','y','g','b','navy','violet'])
막대 테두리
- edgecolor = 테두리 색상
- linewidth = 테두리 두께
plt.bar(df1['요일'],df1['매출액'], width=0.4, color=['r','orange','y','g','b','navy','violet']
,edgecolor='gray',linewidth=2)
막대 패턴 지정하기
막대에 패턴 지정
- hatch 파라미터에 기호 전달 : '/', '', '|', '-', '+', 'x', 'o', 'O', '.', '*'
plt.bar(df1['요일'],df1['매출액'], width=0.4, color=['r','orange','y','g','b','navy','violet']
,edgecolor='gray',linewidth=2,hatch='x')
패턴의 밀도 지정
- 패턴기호의 개수로 밀도를 조정한다.
plt.bar(df1['요일'],df1['매출액'], width=0.4, color=['r','orange','y','g','b','navy','violet']
,edgecolor='gray',linewidth=2,hatch='xx')
막대마다 다른 패턴 지정
- 막대그래프를 객체로 받는다.
- 막대마다 다른 패턴을 지정한다.
- set_hatch(기호)
bars = plt.bar(df1['요일'],df1['매출액'], width=0.4, color=['r','orange','y','g','b','navy','violet']
,edgecolor='gray',linewidth=2)
bars[0].set_hatch('.')
bars[1].set_hatch('/')
bars[2].set_hatch('+')
bars[3].set_hatch('-')
bars[4].set_hatch('*')
bars[5].set_hatch('|')
bars[6].set_hatch('o')
막대 위치 지정
align = center/edge
- 디폴트: center
- edge로 지정하면 막대의 왼쪽 끝과 틱을 맞춘다.
- 막대의 오른쪽 끝과 틱을 맞추려면 width를 음수로 지정한다.
plt.bar(df1['요일'],df1['매출액'], width=0.4, align='edge')

plt.bar(df1['요일'],df1['매출액'], width=-0.4, align='edge')
두 개의 막대그래프 비교하기
df1
"""
요일 매출액
0 월 10000
1 화 9000
2 수 11000
3 목 8000
4 금 13000
5 토 15000
6 일 14000
"""
df2
"""
요일 매출액
0 월 9000
1 화 9500
2 수 13000
3 목 7000
4 금 12000
5 토 14000
6 일 11000
plt.bar(df1['요일'],df1['매출액'], width=-0.4, align='edge')
plt.bar(df2['요일'],df2['매출액'], width=0.4, align='edge')
plt.title('두 매장의 요일별 매출액 평균', size=15)
plt.grid(axis='y', ls=':')
plt.barh(df1['요일'],df1['매출액'], height=-0.4, align='edge')
plt.barh(df2['요일'],df2['매출액'], height=0.4, align='edge')
plt.title('두 매장의 요일별 매출액 평균', size=15)
plt.grid(axis='x', ls=':')