페이지 불러오는 중
seaborn은 그림의 외형을 세 축으로 나눠 통제합니다.
set_style로 5종 프리셋(darkgrid, whitegrid, dark, white, ticks).set_context로 4종(paper < notebook < talk < poster).color_palette로 범주형(deep)·순차(viridis)·발산(coolwarm)을 구분해서 씀.
set_theme() 한 번으로 위 셋 + 폰트가 한꺼번에 설정됩니다. 팔레트 선택은 "데이터가 범주냐, 크기 순서가 있냐, 0 기준 양방향이냐"로 결정합니다.import seaborn as sns
sns.set_theme(style="whitegrid", context="notebook", palette="deep")set_theme — 통합 진입점sns.set_theme() # 전부 기본값
sns.set_theme(style="ticks", context="talk", palette="colorblind", font="sans-serif")
sns.set_theme(rc={"figure.figsize": (8, 5), "axes.spines.top": False})set_style + set_context + set_palette + matplotlib rcParams를 한 번에 적용합니다.rc=로 임의의 matplotlib 파라미터를 덮어씁니다.sns.set()은 set_theme()의 옛 이름입니다(동일 기능).💡 이럴 때: 노트북 맨 위에서
sns.set_theme(context="notebook")로 한 번 잡아 두면 이후 모든 그림이 일관된 크기·색으로 나옵니다. 발표 자료를 만들 때만context="talk"로 바꿔 다시 실행합니다.
set_style / axes_stylesns.set_style("whitegrid")
with sns.axes_style("dark"): # 이 블록 안에서만 임시 적용
sns.histplot(...)
sns.despine() # 위·오른쪽 축선 제거
sns.despine(left=True, offset=10, trim=True)despine()은 불필요한 축선(spine)을 걷어내 데이터 잉크 비율을 높입니다.set_context / plotting_contextsns.set_context("talk")
sns.set_context("notebook", font_scale=1.2, rc={"lines.linewidth": 2})
with sns.plotting_context("poster"):
...font_scale로 글꼴만 따로 키울 수 있습니다.💡 이럴 때: 같은 그림을 블로그와 발표에 모두 써야 하면, 코드는 그대로 두고 저장 직전에
set_context만 바꿔 두 번 렌더링합니다. 크기를 손으로 조정할 필요가 없습니다.
색 선택의 원칙은 데이터의 성질에 컬러맵 종류를 맞추는 것입니다.
sns.color_palette("deep") # 기본 범주 팔레트 10색
sns.color_palette("viridis", as_cmap=True)# 연속 컬러맵 객체
sns.color_palette("vlag", n_colors=7)
sns.set_palette("colorblind") # 이후 hue에 기본 적용
# 직접 만들기
sns.light_palette("seagreen", n_colors=5) # 흰색→색 순차
sns.dark_palette("#69d", as_cmap=True)
sns.diverging_palette(220, 20, as_cmap=True) # 두 색상(hue) 사이 발산
sns.cubehelix_palette(8) # 흑백 인쇄에도 단조 증가hue에 넘긴 변수가 수치형이면 seaborn이 자동으로 순차 컬러맵을 씁니다. 범주형이면 정성 팔레트.center=0.
그림에서 보이는 것: 같은 산점도라도 palette="deep"이면 채도 있는 파랑·주황·초록으로 그룹이 또렷이 갈리고, palette="pastel"이면 색이 흐려 겹친 영역 구분이 어려워집니다.hls / husl — 균일한 채도의 범주 색sns.color_palette("hls", 8) # HLS 공간에서 등간격 색상
sns.color_palette("husl", 8) # 사람 지각상 밝기가 균일하도록 보정된 등간격
sns.hls_palette(8, l=.4, s=.8)
sns.husl_palette(8)hls는 수학적으로 등간격이지만 노랑·초록이 유독 밝아 보입니다. husl은 이를 지각적으로 보정합니다.💡 이럴 때: 범주가 6개를 넘어가면 색만으로 구분이 어려워집니다.
husl로 늘리기보다, 격자(col=)로 쪼개거나 상위 몇 개만 남기고 나머지를 "기타"로 묶는 편이 더 잘 읽힙니다.
palette="colorblind": seaborn이 제공하는 색각 이상 친화 정성 팔레트."viridis", "cividis", "vlag", "mako"처럼 밝기가 단조 변화하는 것을 씁니다. 밝기 차이는 대부분의 색각 이상에서도 보존됩니다.style=(마커 모양), 라벨, 직접 주석을 병행합니다.cubehelix_palette(밝기가 나선형으로 단조 증가).sns.set_theme(palette="colorblind")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="time") # 색+모양 이중 인코딩💡 이럴 때: 발표·배포용 그림은
palette="colorblind"또는viridis계열을 기본으로 삼습니다. "예뻐서" 고른 빨강-초록 팔레트는 접근성 문제를 만듭니다.
댓글
GitHub 계정으로 의견이나 질문을 남길 수 있습니다.