All About Seaborn

Jacob Kim·2023년 12월 28일
0

Datascience Dictionary

목록 보기
4/14
post-thumbnail

Seaborn 특징

여러 변수 간의 관계를 검사하기 위한 데이터 집합 지향 API
범주형 변수를 사용하여 관측치 또는 집계 통계량을 표시하기 위한 전문적인 지원
일변량 또한 이변량 분포를 시각화하고 데이터의 부분 집합 간 비교하기 위한 옵션
서로 다른 종류의 종속 변수에 대한 선형 회귀 모형의 자동 추정 및 표시
복잡한 데이터셋의 전체 구조에 대한 편리한 보기
복잡한 시각화를 쉽게 구축할 수 있는 다중 플롯 그리드 구조를 위한 높은 수준의 추상화

import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats
import matplotlib as mpl
import numpy as np
import seaborn as sns
sns.__version__
sns.set(style="whitegrid")

산점도(Scatter Plot)

penguins = sns.load_dataset("penguins")
penguins

sns.relplot(x="bill_length_mm", y="bill_depth_mm", data=penguins)

sns.relplot(x="flipper_length_mm", y="body_mass_g",data=penguins);

sns.relplot(x="bill_length_mm", y="bill_depth_mm",
            hue="bill_length_mm", data=penguins);

sns.relplot(x="flipper_length_mm", y="body_mass_g",
            hue="species", style="species", data=penguins)

sns.relplot(x="flipper_length_mm", y="body_mass_g",
          hue="species", style="island", data=penguins);

sns.relplot(x="flipper_length_mm", y="body_mass_g", 
            hue="species", col="island", data=penguins)

sns.relplot(x="bill_length_mm", y="bill_depth_mm",
            hue="species", col = "island", data=penguins);

sns.relplot(x="bill_length_mm", y="bill_depth_mm",
            hue="flipper_length_mm",  data=penguins);

sns.relplot(x="bill_length_mm", y="bill_depth_mm",
            hue="body_mass_g",  data=penguins);

sns.relplot(x="bill_length_mm", y="bill_depth_mm",
            hue="body_mass_g",  size="body_mass_g", 
            sizes=(10,300), data=penguins);

라인 플롯(Line Plot)

flights = sns.load_dataset("flights")
flights

sns.relplot(x="year", y="passengers", kind="line", data=flights)

dots = sns.load_dataset('dots')
dots

sns.relplot(x="time", y="firing_rate",
            kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            ci= None, kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            ci= "sd", kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            estimator=None, kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            hue="choice", kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            hue="align", kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            hue="align", style="choice", 
            kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            hue="align", style="choice", 
            dashes=False, markers=True,
            kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            hue="align", col="choice", 
            kind="line", data=dots);

sns.relplot(x="time", y="firing_rate",
            style="choice", 
            kind="line", data=dots.query("align =='sacc'"));

sns.relplot(x="time", y="firing_rate",
            hue = "coherence", style="choice", 
            kind="line", data=dots.query("align =='sacc'"));

sns.relplot(x="time", y="firing_rate",
            hue = "coherence", col="choice", 
            kind="line", data=dots.query("align =='sacc'"));

fmri = sns.load_dataset("fmri")
fmri

sns.relplot(x="timepoint", y="signal",
            kind="line", data=fmri)

sns.relplot(x="timepoint", y="signal", 
            sort=False, kind="line", data=fmri)

sns.relplot(x="timepoint", y="signal", 
            style="region", size="event",
            kind="line", data=fmri);

sns.relplot(x="timepoint", y="signal", 
            hue="subject", style="region", size="event",
            kind="line", data=fmri);

sns.relplot(x="timepoint", y="signal", 
            hue="subject", col="region", size="event",
            kind="line", data=fmri);

palette = sns.cubehelix_palette(n_colors=14, light=0.8)
sns.relplot(x="timepoint", y="signal", 
            hue="subject", col="region", size="event",
           palette=palette,  kind="line", data=fmri);

palette = sns.cubehelix_palette(n_colors=14, light=0.8)
sns.relplot(x="timepoint", y="signal", 
            hue="subject", col="region", 
           palette=palette,  kind="line", data=fmri.query("event == 'cue'"));

sns.relplot(x="timepoint", y="signal", 
            hue="subject", col="region", row="event",
           palette=palette,  kind="line", data=fmri);

sns.relplot(x="timepoint", y="signal", 
            hue="event", style="event",
            col="subject", col_wrap =4, linewidth=3,
            kind="line", data=fmri.query("region == 'parietal'"));


tdf = pd.DataFrame(np.random.randn(40,4),
                index=pd.date_range('2022-12-29', periods=40),
                columns=['A', 'B', 'C', 'D'])
tdf

sns.relplot(kind="line", data=tdf);

g = sns.relplot(kind="line", data=tdf);
g.fig.autofmt_xdate()

g = sns.relplot(kind="line", data=tdf['A']);
g.fig.autofmt_xdate()

범주형 데이터(Categorical Data)

범주형 산점도(Categorical scatterplots)

stripplot() (with kind="strip", the default)
swarmplot() (with kind="swarm")

penguins

sns.catplot(x="species", y="body_mass_g", data=penguins)

sns.catplot(x="species", y="body_mass_g", 
            jitter = False, data=penguins)

sns.catplot(x="species", y="body_mass_g", 
            kind="swarm", data=penguins)

sns.catplot(x="species", y="body_mass_g", 
            hue="sex",
            kind="swarm", data=penguins)

sns.catplot(x="sex", y="body_mass_g", 
            hue="species",
            kind="swarm", data=penguins)

sns.catplot(x="sex", y="body_mass_g", 
            hue="species",kind="swarm",
            order=["Female sex", "Male"], data=penguins)

sns.catplot(x="body_mass_g", y="species", 
            hue="island",kind="swarm",
             data=penguins)

sns.catplot(x="species", y="body_mass_g", 
            hue="sex",col="island", aspect=.7,
            kind="swarm",data=penguins)

범주형 분포도(Categorical distribution plots)

boxplot() (with kind="box")
boxenplot() (with kind="boxen")
violinplot() (with kind="violin")

박스 플롯(Box plots)

sns.catplot(x="species", y="body_mass_g",
            kind="box", data=penguins)

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="box", data=penguins)

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="box", 
            dodge=False, data=penguins)

sns.catplot(x="species", y="body_mass_g",
            col="sex", kind="box", 
            dodge=False, data=penguins)

sns.catplot(x="body_mass_g", y="species",
            row="sex", kind="box",
            height=2, aspect=4,
            data=penguins)

iris = sns.load_dataset("iris")
iris

sns.catplot(kind="box", data=iris)

sns.catplot(kind="box", orient='h', data=iris)

sns.catplot(x="species",y="sepal_length", kind="box", data=iris)

sns.catplot(x="petal_length",y="species", kind="box", data=iris)

박슨 플롯(Boxen plots)

diamonds = sns.load_dataset("diamonds")
diamonds

sns.catplot(x="cut", y="price",
            kind="boxen", data=diamonds)

sns.catplot(x="color", y="price",
            kind="boxen", data=diamonds)

sns.catplot(x="color", y="price",
            kind="boxen", data=diamonds.sort_values("color"))

sns.catplot(x="clarity", y="price",
            kind="boxen", data=diamonds)

바이올린 플롯(Violin plots)

violinplot : 커널 밀도 추정과 상자 도표 결합

penguins

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="violin", data=penguins)

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="violin", 
            bw=.15, cut=0,
            data=penguins)

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="violin", 
            split = True, data=penguins)

sns.catplot(x="species", y="body_mass_g",
            hue="sex", kind="violin", 
            inner="stick",split=True,
            data=penguins)

sns.catplot(x="species", y="body_mass_g",
            kind="violin", 
            inner=None, data=penguins)
sns.swarmplot(x="species", y="body_mass_g",
              color='k', size=3,
              data=penguins, ax=g.ax);

sns.catplot(kind="violin", data=iris)

sns.catplot(kind="violin", orient='h', data=iris)

sns.catplot(x="species", y="sepal_length",
            kind="violin", data=iris);

sns.catplot(x="petal_length", y="species",
            kind="violin", data=iris);

범주형 추정치 도표(Categorical esimate plots)

barplot() (with kind="bar")
pointplot() (with kind="point")
countplot() (with kind="count")

막대 플롯(Bar plots)

mpg = sns.load_dataset('mpg')
mpg

sns.catplot(x="origin", y="mpg",
            hue="cylinders", kind="bar",
            data=mpg);

sns.catplot(x="origin", y="horsepower",
            hue="cylinders", kind="bar",
            palette="ch:.20",data=mpg);

sns.catplot(x="cylinders", y="horsepower",
            kind="bar", palette="ch:.20", edgecolor='.6',
            data=mpg);

profile
AI, Information and Communication, Electronics, Computer Science, Bio, Algorithms

0개의 댓글