안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 선 그래프(라인 차트, Line Chart)에 Errorbar를 추가하는 방법에 대해서 알아보려고 합니다. Matplotlib에서는 errorbar라는 함수가 있어서 선 그래프에 errorbar를 추가할 수 있어요. 이에 대한 사용법을 알아보겠습니다.
- 목차 -
1. Matplotlib errorbar 기본
먼저 시각화에 사용될 데이터를 다운 받을거예요. 꽁냥이는 Seaborn에서 제공하는 '팁' 데이터를 이용할 거예요.
import matplotlib.pyplot as plt
import seaborn as sns
tip_df = sns.load_dataset('tips')
tip_df.head()
꽁냥이는 일별 평균 팁과 표준편차를 계산했어요. 표준편차는 Error Bar를 그리기 위해 계산한 거예요.
agg_tip_df = tip_df.groupby('day').agg({'tip':['mean', 'std']}).reset_index()
agg_tip_df.columns = ['day', 'mean_tip', 'std']
num_data = len(agg_tip_df)
x = range(num_data)
y = agg_tip_df['mean_tip']
std = agg_tip_df['std']
errorbar는 기본적으로 선 그래프를 그려주는 plot 함수와 동일하게 x, y인자를 받고요. errorbar를 그리기 위한 xerr, yerr 인자를 받게 되어 있어요. 이때 xerr를 설정하면 Error Bar를 수평으로 그리게 되고 yerr를 설정하면 수직으로 그려주게 되지요. Error Bar는 yerr(xerr)에 설정한 값을 위아래로(좌우로) 선을 그려주게 됩니다. 예를 들어 yerr=1로 설정했다면 선 그래프 위아래로 길이 1만큼 선을 그려준다는 의미지요.
- 수직 Error Bar -
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')
plt.errorbar(x, y, yerr=std) ## 수직 에러 바
plt.xticks(x, agg_tip_df['day'])
plt.ylim(0, 5)
plt.show()
- 수평 Error Bar -
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')
plt.errorbar(y, x, xerr=std) ## 수평 에러 바
plt.yticks(x, agg_tip_df['day'])
plt.xlim(0, 5)
plt.show()
2. Matplotlib errorbar 다양한 기능
Matplotlib errorbar 함수는 Error Bar를 꾸미기 위한 다양한 기능을 제공하고 있어요. 아래 코드를 통해 그 사용법을 확인해보세요. 다만 Error Bar 라인 스타일과 마커는 직접적으로 바꿀 수 없어서 따로 설정을 해주었어요(line 13~15).
fig = plt.figure(figsize=(8,8))
fig.set_facecolor('white')
## 수직 에러 바
h = plt.errorbar(x, y, yerr=std,
marker='o', ## 라인 마커
color='k', ## 라인 색상
ecolor='r', ## 에러 바 라인 색상
elinewidth=1, ## 에러 바 라인 두께
capsize=3, ## 에러 바 양끝 막대 길이
capthick=2, ## 에러 바 양끝 막대 두께
)
h.get_children()[3].set_linestyle('--') ## 에러 바 라인 스타일
h.get_children()[1].set_marker('v') ## 에러 바 아래쪽 마커 스타일
h.get_children()[2].set_marker('^') ## 에러 바 위쪽 마커 스타일
plt.xticks(x, agg_tip_df['day'])
plt.ylim(0, 5)
plt.show()
이번 포스팅에서는 Matplotlib을 이용하여 Error Bar가 포함된 선 그래프(라인 차트, Line Chart)를 그리는 방법을 알아보았습니다. 오늘 배운 내용은 머신 러닝에서 예측 모형의 Hyper Parameter를 교차 검증으로 선택할 때 Elbow Plot(또는 Scree Plot)을 그릴 때 자주 활용됩니다. 머신 러닝하시는 분들은 알아 두시면 유용할 거예요. 부디 이번 포스팅이 많은 분들에게 도움이 되셨길 바라며 이상 포스팅 마치겠습니다.
'데이터 분석 > 시각화' 카테고리의 다른 글
[Matplotlib] Strip Plot(Jitter Plot)을 그려보자 (0) | 2022.09.16 |
---|---|
[Matplotlib] 컬러바(Colorbar) 만들어서 그래프에 삽입하기 (feat. LinearSegmentedColormap, Normalize, ScalarMappable) (0) | 2022.09.15 |
[Seaborn] 12. 변수 간 상관성 확인하기 (feat. relplot) (0) | 2022.08.13 |
[Seaborn] 11. 카테고리(범주, Category) 변수 시각화하기 (feat. catplot) (0) | 2022.08.13 |
[Seaborn] 10. 산점도와 회귀 직선을 동시에 그리기 (feat. lmplot) (0) | 2022.08.13 |
댓글