1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > seaborn笔记:可视化统计关系(散点图 折线图)

seaborn笔记:可视化统计关系(散点图 折线图)

时间:2019-07-11 18:10:43

相关推荐

seaborn笔记:可视化统计关系(散点图 折线图)

0导入库

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set_theme(style="darkgrid")

1 散点图

演示数据集

tips = sns.load_dataset("tips")#导入一个数据集

1.0 基础用法

以下两种方式几乎是等价的

1.0.1 scatterplot

sns.scatterplot(x='total_bill',y='tip',data=tips)#绘制散点图

1.0.2 relplot

sns.relplot(x="total_bill", y="tip", data=tips)

1.1 使用另外一列作为label

1.1.1 离散label

sns.scatterplot(x='total_bill',y='tip',data=tips,hue='smoker')

1.1.2 连续label

sns.scatterplot(x='total_bill',y='tip',data=tips,hue='size')

1.2 使用另外一列作为不同标记的指示

sns.scatterplot(x='total_bill',y='tip',data=tips,hue='smoker',style='smoker')

1.2.1 hue和style不一定需要同一列

sns.scatterplot(x='total_bill',y='tip',data=tips,hue='smoker',style='sex')

1.3 控制散点的大小

sns.scatterplot(x='total_bill',y='tip',data=tips,size='size')

1.3.1 控制散点大小的范围

sns.scatterplot(x='total_bill',y='tip',data=tips,size='size',sizes=(1,1000))

1.4 根据语义分割子图

sns.relplot(x='total_bill',y='tip',data=tips,hue='smoker',col='sex')

2 折线图

2.0 数据

df = pd.DataFrame(dict(time=np.arange(500),value=np.random.randn(500).cumsum()))df

2.1 基本使用方法

下面两种方式类似

sns.relplot(x="time", y="value", kind="line", data=df)

sns.lineplot(x="time", y="value", data=df)

2.2 lineplot 事先排序x

因为 lineplot() 假设我们需要做的事情是将 y 绘制为 x 的函数,所以默认行为是在绘图之前按 x 值对数据进行排序。 但是,可以禁用此功能:

df2 = pd.DataFrame(dict(time=np.random.randn(500).cumsum(),value=np.random.randn(500).cumsum()))df2

sns.lineplot(x="time", y="value", data=df2)

sns.lineplot(x="time", y="value", data=df2,sort=False)

3聚合和表示不确定性

更复杂的数据集将对 同一个x 变量进行多次测量。 seaborn 的默认行为是通过绘制平均值和平均值周围的 95% 置信区间来聚合每个 x 值的多次测量值:

3.1 数据

fmri = sns.load_dataset("fmri")fmri

可以看到一个timepoine会有多个signal的值。

3.1.1 绘制置信区间(默认)

sns.lineplot(x="timepoint", y="signal", data=fmri)

3.1.2 不绘制置信区间

sns.lineplot(x="timepoint", y="signal", data=fmri,ci=None)

3.1.3 绘制标准差区间

sns.lineplot(x="timepoint", y="signal", data=fmri,ci='sd')

3.2 带有不同语义的plot

sns.lineplot(x="timepoint", y="signal", data=fmri,hue='event')

3.3 带有不同线条形状

sns.lineplot(x="timepoint", y="signal", data=fmri,hue='event',style='region')

3.3.1 标记各个点

sns.lineplot(x="timepoint", y="signal", data=fmri,hue='event',style='region',markers=True)

3.4 根据语义分割子图

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。