[Seaborn] 5. barplot
seaborn 막대 그래프
사용할 데이터
from sqlalchemy import create_engine
import numpy as np
import pandas as pd
n = 300
data = {
'국어': np.round(np.random.normal(75, 10, size=n).clip(50, 100), 1),
'영어': np.round(np.random.normal(72, 12, size=n).clip(50, 100), 1),
'수학': np.round(np.random.normal(70, 15, size=n).clip(50, 100), 1),
'성별': np.random.choice(['남', '여'], size=n),
'반': np.random.choice([f'{i}반' for i in range(1,10)], size=n)
}
df = pd.DataFrame(data)
1. 막대그래프 기본
plt.figure(figsize=(12, 6))
sns.barplot(
data=df, x='반', y='국어'
)
- data에 데이터프레임, x랑 y에 각각 컬럼 삽입
2. 그룹화
plt.figure(figsize=(12, 6))
sns.barplot(
# 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)
data=df, x='반', y='국어',
# 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도
hue='성별', palette='muted', saturation=0.7,
)
- 성별에 따른 색상 분류
3. 스타일링
plt.figure(figsize=(12, 6))
sns.barplot(
# 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)
data=df, x='반', y='국어',
# 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도
hue='성별', palette='muted', saturation=0.7,
# 막대 스타일링: 너비 / 테두리색 / 테두리두께
width=0.8, edgecolor='black', linewidth=2,
)
- 막대 그래프 두께, 테두리 등 설정이 가능하다.
4. 통계량 설정
plt.figure(figsize=(12, 6))
sns.barplot(
# 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)
data=df, x='반', y='국어',
# 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도
hue='성별', palette='muted', saturation=0.7,
# 막대 스타일링: 너비 / 테두리색 / 테두리두께
width=0.8, edgecolor='black', linewidth=2,
# 통계 설정: 계산함수 / 오차막대 / 오차막대 캡 크기
# (종류, 신뢰수준 95%) - 'ci':신뢰구간 , 'se':표준오차, 'sd':표준편차, 'pi':예측구간, None
estimator=np.mean, errorbar=('ci',68), capsize=0.3
)
5. 상세 커스터마이징
# 스타일 설정
plt.style.use('seaborn-v0_8')
plt.rcParams["font.family"] = "D2coding"
plt.figure(figsize=(12, 6))
# 기본 막대 그래프
sns.barplot(
# 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)
data=df, x='반', y='국어',
# 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도
hue='성별', palette='Set2', saturation=0.8,
# 막대 스타일링: 너비 / 테두리색 / 테두리두께
width=0.75, edgecolor='white', linewidth=1.5,
# 통계 설정
estimator=np.mean, errorbar=None
)
# 제목과 레이블
plt.title('반별 국어 평균 점수', pad=15, fontsize=13)
plt.xlabel('반', fontsize=11)
plt.ylabel('점수', fontsize=11)
# y축 범위 설정 (데이터를 더 잘 보이게)
plt.ylim(50, 100)
# 범례 설정
plt.legend(
title='성별',
loc='upper right',
frameon=True
)
# 격자 추가 (y축만)
plt.grid(axis='y', linestyle='--', alpha=0.3)
plt.tight_layout()
정리
sns.barplot(
# 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)
data=df, x='반', y='국어',
# 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도
hue='성별', palette='muted', saturation=0.7,
# 막대 스타일링: 너비 / 테두리색 / 테두리두께
width=0.8, edgecolor='black', linewidth=2,
# 통계 설정: 계산함수 / 오차막대 종류 / 오차막대 캡 크기
estimator=np.mean, errorbar=('ci',68), capsize=0.3
)
- 스니펫으로 설정해서 불러올 수 있게 설정하면 끝
{
"Seaborn Barplot Template": {
"prefix": "sns_bar",
"body": [
"sns.barplot(",
" # 기본 데이터 설정: 데이터프레임 / X축(범주) / Y축(수치)",
" data=${1:df}, x='${2:col1}', y='${3:col2}',",
"",
" # 그룹화 및 스타일링: 색상 구분 / 팔레트 / 채도",
" hue='${4:col3}', palette='${5:muted}', saturation=${6:0.7},",
"",
" # 막대 스타일링: 너비 / 테두리색 / 테두리두께",
" width=${7:0.8}, edgecolor='${8:black}', linewidth=${9:2},",
"",
" # 통계 설정: 계산함수 / 오차막대 종류 / 오차막대 캡 크기",
" # errorbar=('ci',68): 1시그마, ('ci',95): 2시그마, ('ci',99): 3시그마",
" # 종류: 'ci':신뢰구간, 'se':표준오차, 'sd':표준편차, 'pi':예측구간, None",
" estimator=${10:np.mean}, errorbar=${11:None}, capsize=${12:0.3}",
")"
],
"description": "Create a Seaborn barplot with common parameters"
}
}
'Data Visualization > Seaborn' 카테고리의 다른 글
[Seaborn] 8. pairplot (0) | 2024.11.15 |
---|---|
[Seaborn] 7. jointplot (0) | 2024.11.15 |
[Seaborn] 6. heatmap (0) | 2024.11.15 |
[Seaborn] 4. violin plot (0) | 2024.11.15 |
[Seaborn] 3. boxplot (0) | 2024.11.15 |
[Seaborn] 2. histplot (0) | 2024.11.15 |
[Seaborn] 1. scatterplot (0) | 2024.11.14 |
댓글