seaborn.lineplot — seaborn 0.12.0 documentation (pydata.org)
Timeseries plot with error bands — seaborn 0.12.0 documentation (pydata.org)
Lineplot?
두 변수 간의 관계를 보여주기에 적합한 plot (수치형 변수 - 수치형 변수, 범주형 변수 - 수치형 변수)
hue, size, styple 파라미터 등 사용 가능
1. 라이브러리 및 데이터셋 로드
사용할 데이터셋: flights
- 10년 간 월 별 승객 수 데이터
import seaborn as sns
flights = sns.load_dataset("flights")
flights.head()
2. 기본 line plot
nov_flights = flights.query("month == 'Nov'")
sns.lineplot(data=nov_flights, x="year", y="passengers")
위는 수치형 변수와 - 범주형 변수를 양 축으로 하여 그린 것이다.
수치형 변수와 범주형 변수간에 적용하기에도 적합해보인다.
그러나, 범주형 변수가 적은 경우에는 부적합한 것 같다.
sns.lineplot(data=fmri, x = "timepoint", y = "region")
범주형-범주형은 당연히 의미가 없다.
flights dataset wide-form 으로 변환
flights_wide = flights.pivot("year", "month", "passengers")
flights_wide.head()
sns.lineplot(data=flights_wide["Nov"])
sns.lineplot(data=flights_wide)
3. hue 지정
월 별로 색깔을 지정해보겠다.
sns.lineplot(data=flights, x="year", y="passengers", hue="month")
4. style 지정
sns.lineplot(data=flights, x="year", y="passengers", hue="month", style="month")
style에 month를 지정해줌으로써 월 별로 선의 스타일이 달라짐을 확인할 수 있다.
동일한 변수(열)에 여러 옵션을 지정함으로써 접근성을 높여준다..!
4-1. 라인 스타일 지정
sns.lineplot(data=flights_wide["Nov"], linestyle = ":")
sns.lineplot(data=flights_wide["Nov"], linestyle = "-.")
4-2. set_style (그리드 스타일)
set_style을 사용하면 grid의 스타일을 지정해줄 수 있다.
# whitegrid, darkgrid, white, dark, ticks
sns.set_style("whitegrid")
sns.lineplot(data=flights, x="year", y="passengers", hue="month", style="month")
4-3. color(색깔)와 alpha(투명도)
sns.lineplot(data=fmri, x="timepoint", y="signal", ci = None, color = "red", alpha =0.5)
fmri = sns.load_dataset("fmri")
fmri.head()
sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event")
물론, hue와 style에 다른 변수를 지정할 수도 있다.
sns.lineplot(data=fmri, x="timepoint", y="signal", hue="region", style="event")
style을 사용할 경우, dash를 대신하여 markers를 사용하도록 옵션을 지정할 수도 있다.
sns.lineplot(
data=fmri,
x="timepoint", y="signal", hue="event", style="event",
markers=True, dashes=False
)
4-4. marker
marker를 통해 마커 옵션을 지정할 수 있다.
sns.lineplot(
data=fmri,
x="timepoint", y="signal", hue="event", style="event", marker = '+'
)
marker = "+"
marker = "o"로 하면, dot 로 표시된다.
5. error bar
sns.lineplot(
data=fmri, x="timepoint", y="signal", hue="event", err_style="bars", errorbar=("se", 2),
)
6. units
units을 지정하면 의미매핑을 사용하지 않고도 여러 줄로 plot을 그릴 수 있다.
sns.lineplot(
data=fmri.query("region == 'frontal'"),
x="timepoint", y="signal", hue="event", units="subject",
estimator=None, lw=1,
)
7. 수치형 변수의 그룹핑
dots = sns.load_dataset("dots").query("align == 'dots'")
dots.head()
hue와 스타일 적용
sns.lineplot(
data=dots, x="time", y="firing_rate", hue="coherence", style="choice",
)
8. palette
palette 지정과 함께 matplotlib.colors.Normalize 옵션도 함께 지정해주었다.
sns.lineplot(
data=dots.query("coherence > 0"),
x="time", y="firing_rate", hue="coherence", style="choice",
palette="flare", hue_norm=mpl.colors.LogNorm(),
)
palette = sns.color_palette("mako_r", 6)
sns.lineplot(
data=dots, x="time", y="firing_rate",
hue="coherence", style="choice",
palette=palette
)
9. size
sns.lineplot(
data=dots, x="time", y="firing_rate",
size="coherence", hue="choice",
legend="full"
)
size는 선의 굵기를 의미하는 것 같다.(선의 굵기를 어떤 기준으로 분류할지?)
sizes를 사용하면 size의 범위를 지정할 수 있다.
sns.lineplot(
data=dots, x="time", y="firing_rate",
size="coherence", hue="choice",
sizes=(.25, 2.5)
)
10. relplot에서 line plot
relplot은 lineplot과 facetgrid를 합치기 위해서 사용할 수 있다.
replot은 부가적인 범주형 변수로 그룹핑할 수 있게끔 도와주며, facet grid를 직접적으로 사용하는 것보다 안전하다.
sns.relplot(
data=fmri, x="timepoint", y="signal",
col="region", hue="event", style="event",
kind="line"
)
'Python > Seaborn' 카테고리의 다른 글
[Python] Seaborn 3 - scatterplot (0) | 2022.10.27 |
---|---|
[Python] seaborn 2 - lmplot (0) | 2022.10.27 |
[Python] seaborn 1 - 기본개념 (0) | 2022.10.27 |
댓글