이번 포스팅에서는
Matplotlib 라이브러리의 기본 그래프 중에서
막대그래프를 그려 볼게요.
지난번 포스팅과 마찬가지로
본격적인 작업에 앞서 기본적인 환경 세팅을 하겠습니다.
① matplotlib 라이브러리 사용 정의
② 그래프에서 환경설정이 가능하도록 폰트 설정
③ 한글 사용이 (-) 부호가 깨지는 현상 방지
import matplotlib.pyplot as plt # matplotlib 라이브러리 load
## 한글 사용 가능하도독 폰트 설정
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic' # os: window
matplotlib.rcParams['axes.unicode_minus'] = False # 한글 폰트 사용 시 (-) 부호 깨짐 현상 해결
실습을 위해
매우 간단한 데이터를 생성해 볼게요.
x = ['2.21일', '2.22일', '2.23일', '2.24일'] # 15일, 16일, 17일, 18일을 의미
y = [99573, 171452, 170016, 165890] # 위에 대응되는 날에 대한 코로나 확진자 수
막대그래프 그리기
기본 그래프(.bar())
위의 데이터를 이용해서 가장 기본적인 막대그래프를 그려 볼게요.
plt.bar(x, y) # x: x축, y: y축에 대응되는 데이터
다음에는 그래프에 제목(titile)을 달아볼게요.
제목 달기(.title())
축 설명 추가(.xlabel() / .ylabel())
x, y축 설명 회전
x축 설명 값을 다른 값으로 변경
위의 내용은 선 그래프 그리기와 동일합니다.
자세한 내용은 아래 포스팅을 참고하세요.
기본 옵션 변경하기
기본 옵션 변경을 통해
막대 색상, 투명도, 두께, 수평 막대그래프로
변경이 가능해요.
## 막대 색상 변경
plt.bar(x,y, color = 'green')
## 카테고리별 색상 변경
plt.bar(x,y, color = ['blue','green','yellow','red'])
## 투명도 추가
plt.bar(x,y, color = ['blue','green','yellow','red'], alpha = 0.3)
# 투명도 수치가 작을수록 더 투명해짐
## 막대 두께 조정
plt.bar(x,y, color = ['blue','green','yellow','red'], width = 0.5)
## y축 범위 지정
plt.bar(x,y, color = ['blue','green','yellow','red'])
plt.ylim([min(y) - 10000, max(y) + 10000])
## 수평 막대그래프 그리기
plt.barh(x,y)
plt.xlim(min(y) - 1000, max(y) + 1000)
막대 채우기 스타일 변경
막대마다 다른 스타일의 모양으로 채우기를 할 수 있어요.
## 막대 채우기 스타일 추가
bar = plt.bar(x,y)
bar[0].set_hatch('/')
bar[1].set_hatch('x')
bar[2].set_hatch('..')
bar[3].set_hatch('+')
텍스트 삽입
막대 높이를 나타내는 텍스를 추가할 수 있어요.
원리는 그래프 안에서 x, y 좌표 값을 이용해서 하는 건데요.
원리를 이해하면,
가장 높은(낮은) 막대그래프의 텍스트 스타일만
변경할 수도 있어요.
## 막대 높이를 나타내는 텍스트 추가
plt.bar(x,y)
plt.ylim([min(y) - 10000, max(y) + 30000])
for i, txt in enumerate(y) :
plt.text(i, txt + 1000, txt, ha = 'center', color = 'blue')
## 가장 높은 막대그래프만 별도 스타일 지정하기
plt.bar(x,y)
plt.ylim([min(y) - 10000, max(y) + 30000])
for i, txt in enumerate(y) :
if txt == max(y):
plt.text(i, txt + 1500, txt, ha = 'center', color = 'red', size = 20)
else:
plt.text(i, txt + 1500, txt, ha = 'center')
누적 막대그래프
다음은 누적 막대그래프를 그려 볼게요.
누적 막대그래프는 위에 있는 예제 데이터로는
설명하기가 조금 어렵고요.
그래서 붓꽃 데이터를 활용해서 그려 볼게요.
아래 데이터를 다운로드하시고요.
## 누적 막대그래프 그리기
## iris data 가져오기
irisData = pd.read_csv("C:/iris.csv")
## 붓꽃 종류별 평균 SepalLength SepalWidth PetalLength PetalWidth 구하기
df = irisData.groupby('Species').mean()
## 붓꽃 종류별 평균 SepalLength와 SepalWidth 나타내기
plt.bar(df.index, df['SepalLength'])
plt.bar(df.index, df['SepalWidth'], bottom = df['SepalLength'])
## 붓꽃 종류별 평균 SepalLength와 SepalWidth 나타내기
## 범례 추가
plt.bar(df.index, df['SepalLength'], label = 'SepalLength')
plt.bar(df.index, df['SepalWidth'], bottom = df['SepalLength'], label = 'SepalWidth')
plt.ylim([2, 12])
plt.legend(ncol = 2)
다중 막대그래프 그리기
끝으로 다중 막대그래프를 그려 볼게요.
원리는 각 막대의 위치를 변경하고,
막대 폭을 조정해서 최종 그리게 됩니다.
## 다중 막대그래프 그리기
import numpy as np
index = np.arange(len(df.index))
plt.bar(index - 0.15, df['SepalLength'], width = 0.3, label = 'SepalLength')
plt.bar(index + 0.15, df['SepalWidth'], width = 0.3, label = 'SepalWidth')
plt.ylim([2,8])
plt.legend()
plt.xticks(index, df.index)
이상 막대그래프 그리기에 대해서
알아보았는데요.
다음 포스팅에서는 원 그래프 그리기에 대해서
알아보겠습니다.
반응형
'Python > 데이터 시각화' 카테고리의 다른 글
막대그래프에 도형(타원) 삽입하기 (0) | 2022.04.16 |
---|---|
워드 클라우드(Word Cloud) 생성하기(with 파이썬 DataFrame) (0) | 2022.02.28 |
matplotlib 산점도 그리기 (0) | 2022.02.27 |
matplotlib 파이 차트 그리기 (0) | 2022.02.26 |
matplotlib 선 그래프 그리기 (0) | 2022.02.20 |
댓글