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

  0 导入库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.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");

 

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值