Seaborn第三章:带有误差范围的时间序列图

案例

学习网址:https://seaborn.pydata.org/examples/errorband_lineplots.html

import seaborn as sns
import pandas as pd
sns.set_theme(style="darkgrid")

# 导入数据
fmri = pd.read_csv("../../seaborn-data-master/fmri.csv")

# 查看数据
fmri.head()
subject timepoint event region signal
0 s13 18 stim parietal -0.017552
1 s5 14 stim parietal -0.080883
2 s12 18 stim parietal -0.081033
3 s11 18 stim parietal -0.046134
4 s10 18 stim parietal -0.037970
# 画有误差错误带的时序图
sns.lineplot(
    x = "timepoint", y = 'signal',
    hue = 'region', style = 'event',
    data = fmri
)

Seaborn第三章:带有误差范围的时间序列图

sns.lineplot() 的案例

example 1

# 导入数据
import pandas as pd
import seaborn as sns
flights = pd.read_csv("../../seaborn-data-master/flights.csv") # 10年中
flights.head()
year month passengers
0 1949 January
1 1949 February
2 1949 March
3 1949 April
4 1949 May
may_flights = flights.query("month == 'May'")
# may_flights = flights.loc[flights["month"] == 'May'] 也行
print(may_flights)
sns.lineplot(data = may_flights, x = 'year', y = 'passengers')
[out]:
       year month  passengers
  4    1949   May         121
  16   1950   May         125
  28   1951   May         172
  40   1952   May         183
  52   1953   May         229
  64   1954   May         234
  76   1955   May         270
  88   1956   May         318
  100  1957   May         355
  112  1958   May         363
  124  1959   May         420
  136  1960   May         472

Seaborn第三章:带有误差范围的时间序列图

example 2

换一种形式处理数据

flights_wide = flights.pivot("year", "month", "passengers")
'''
    参数解读:
        year : 指定每一行的输出内容
        month : 指定每一列的输出内容
        passengers : 指定输出的内容
'''
flights_wide.head()
month April August December February January July June March May November October September
year
1949 129 148 118 118 112 148 135 132 121 104 119 136
1950 135 170 140 126 115 170 149 141 125 114 133 158
1951 163 199 166 150 145 199 178 178 172 146 162 184
1952 181 242 194 180 171 230 218 193 183 172 191 209
1953 235 272 201 196 196 264 243 236 229 180 211 237
sns.lineplot(data = flights_wide['May'])

Seaborn第三章:带有误差范围的时间序列图

example 3

## 可以输出多列的线型图
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6)) # 为了让图例不覆盖曲线
sns.lineplot(data = flights_wide)
plt.legend(loc='upper left') # 设置图例的位置

Seaborn第三章:带有误差范围的时间序列图

example 4

# 绘制每年的平均值以及95%的置信区间
sns.lineplot(data = flights, x = 'year', y = 'passengers')

Seaborn第三章:带有误差范围的时间序列图

example 5

# 可以对不同分组应用不同的颜色:hue
sns.lineplot(data = flights, x = 'year', y = 'passengers', hue = 'month') # 用不同的颜色区分不同的月份

Seaborn第三章:带有误差范围的时间序列图

example 6

# 可以通过调节 style 参数更改线条的类型
plt.figure(figsize=(8,6))
sns.lineplot(data = flights, x = 'year', y = 'passengers', hue = 'month', style = 'month')
plt.legend(loc='upper left')

Seaborn第三章:带有误差范围的时间序列图

可以发现颜色图例和example3一致(除了月份顺序)

example 7

sns.lineplot(data = flights, x = 'passengers', y = 'year', orient = 'y')
# xy轴互换,此时 1个 y 对应多个 x ,如果直接画的画有点类似于 迪利克雷函数 那种 图像形式,
# 而加上 orient = 'y' 就能得到每一年的平均值,并画出95%的置信区间

Seaborn第三章:带有误差范围的时间序列图

注:使用 orient 参数前需要将seaborn版本升级到 0.12.0

# 查看 seaborn 版本
sns.__version__
'0.12.0'

example 8

## 加载数据
fmri = pd.read_csv("../../seaborn-data-master/fmri.csv")
fmri.head()
subject timepoint event region signal
0 s13 18 stim parietal
1 s5 14 stim parietal
2 s12 18 stim parietal
3 s11 18 stim parietal
4 s10 18 stim parietal
sns.lineplot(data = fmri, x = 'timepoint', y = 'signal', hue = 'event') # 以 event 为依据分类

Seaborn第三章:带有误差范围的时间序列图

example 9

# 接着 example 8 的例子,用不同的色调区分 region,用不同的线条类型区分 event
sns.lineplot(data=fmri, x='timepoint', y='signal', hue='region', style='event')

Seaborn第三章:带有误差范围的时间序列图

example 10

# 可以用 markers = True 进行描点
sns.lineplot(
    data=fmri,
    x='timepoint',
    y='signal',
    hue='event',
    style='event',
    markers=True, # 不同类别线条上的描点进行区别
    dashes=False # 不同类别线条的形状不进行区别
)

Seaborn第三章:带有误差范围的时间序列图

example 11

# 这次利用误差线而不是误差宽度
sns.lineplot(
    data = fmri,
    x='timepoint',
    y='signal',
    hue='event',
    err_style='bars',
    errorbar=('se',2) # se代表样本标准误差
)

# errorbar可选参数有 'ci' 'se' 'sd' 'pi'
# ci 是显著性检验的补充,反映的是真实的均值或者均值区别的范围,即置信区间
# se 标准误差(Standard Error)
# sd 样本标准差

Seaborn第三章:带有误差范围的时间序列图

example 12

# 使用 units 参数进行分组
sns.lineplot(
    data = fmri.query("region == 'frontal'"),
    x='timepoint',
    y='signal',
    hue='event',
    units='subject',
    estimator=None, #用于在同一水平x上聚合y变量的多个观测值的方法,如果是 None,将绘制所有观测值
    # lw=1
)

Seaborn第三章:带有误差范围的时间序列图

example 13

# 加载新的数据集
dots = pd.read_csv("../../seaborn-data-master/dots.csv").query("align == 'dots'")
dots.head()
align choice time coherence firing_rate
0 dots T1 -80 0.0
1 dots T1 -80 3.2
2 dots T1 -80 6.4
3 dots T1 -80 12.8
4 dots T1 -80 25.6
# 对不同的coherence(数字变量)调不同的颜色,以 choice 为依据划分线条的类型
import matplotlib.pyplot as plt
plt.figure(figsize = (8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    hue = 'coherence',
    style = 'choice'
)
plt.legend(loc='upper left')

Seaborn第三章:带有误差范围的时间序列图

example 14

# 可以以python列表或字典的形式传递特定的颜色
import matplotlib.pyplot as plt
plt.figure(figsize = (8,6))
palette = sns.color_palette('mako_r', 6)
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    hue = 'coherence',
    style = 'choice',
    palette = palette
)
plt.legend(loc='upper left')

Seaborn第三章:带有误差范围的时间序列图

example 15

# 不同 coherence 类别可以用不同粗细的线条画出
plt.figure(figsize=(8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    size = 'coherence',
    hue = 'choice',
    legend = 'full'
)
plt.legend(loc='upper left')

Seaborn第三章:带有误差范围的时间序列图

# 可以手动调节线条粗细的范围区间
plt.figure(figsize=(8,6))
sns.lineplot(
    data = dots,
    x = 'time',
    y = 'firing_rate',
    size = 'coherence',
    hue = 'choice',
    sizes = (.25, 2.5) #定义最小值和最大值
)
plt.legend(loc='upper left')

Seaborn第三章:带有误差范围的时间序列图

example 16

# 默认情况下,绘图时按 x 排序,若 调节 sort = False,则绘图时按数据集中的顺序绘制
import numpy as np
x, y = np.random.normal(size = (2, 5000)).cumsum(axis = 1)
sns.lineplot(x=x, y=y, lw=1)

Seaborn第三章:带有误差范围的时间序列图

sns.lineplot(x=x, y=y, sort=False, lw=1)

Seaborn第三章:带有误差范围的时间序列图

example 17

# 使用 replot() 分组绘图,以参数 col 进行分组
sns.relplot(
    data = fmri,
    x = 'timepoint',
    y = 'signal',
    col = 'region',
    hue = 'event',
    style = 'event',
    kind = 'line'
)

Seaborn第三章:带有误差范围的时间序列图

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Seaborn第三章:带有误差范围的时间序列图 - Python技术站

(0)
上一篇 2023年4月2日 下午4:56
下一篇 2023年4月2日 下午4:56

相关文章

  • Python-Seanborn 第一章 Anscombe’s quartet

    学习网站: http://seaborn.pydata.org/examples/scatterplot_matrix.html 一、Anscombe’s quartet(安斯库姆四重奏) 1973年,统计学家F.J. Anscombe构造出了四组奇特的数据。它告诉人们,数据分析之前,描绘数据所对应的可视化图形有多么的重要!下面绘制出这四组数据的散点图和线性…

    2023年4月2日
    00
  • seaborn 第二章:不同形式的散点图

    目录 二、散点图 sns.scatterplot() 其他案例 example 1 example 2 example 3 example 4 example 5 example 6 example 7 example 8 example 9 example 10 example 11 example 12 example 13 example 14 二、散…

    2023年4月2日
    00
  • 一元线性回归的Python实现

    目录 1 问题的提出 2 原理 2.1 代价函数 2.2 模型的评价 2.2.1 皮尔逊相关系数 2.2.2 决定系数 3 Python 实现 3.1 不调sklearn库 3.2 调 sklearn 库 4 梯度下降法 4.1 原理 4.2 Python实现 参考 1 问题的提出 对于给定的数据集 (D = {(x_1,y_1),(x_2,y_2),cdo…

    2023年4月2日
    00
  • 娱乐向:用 Python 爬 WCA(世界魔方协会)三阶魔方排行榜前一百名选手的成绩信息

    这几天想搞到一个三阶魔方排行榜的数据,官网居然不能导出Excel文件,刚好这几天学了个爬虫,于是爬着玩玩(应该不会进去)。 1 目标网站: https://www.worldcubeassociation.org/results/rankings/333/average 2 准备库 ## 准备的库 import pandas as pd # 数据分析库 im…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部