首页 > 解决方案 > 如何用seaborn绘制曲线的平均值?

问题描述

我想绘制一些点的平均值及其置信区间。我正在使用seaborn。我尝试使用 regplot,lmplot,但它们都不起作用。这是我的程序:

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
sns.set(color_codes=True)

df = pd.read_csv("data.csv")
print(df["a"])
sns.lineplot(y=df.a, x=df.index , data=df)
plt.ylabel("R")
plt.xlabel("T")
plt.show()

图像

我的目标是得到图中的红线。这是保存在 csv Fila 中的简单数据框

index     a
0      -0.120
1      -0.530
2      -0.250
3      -0.330
4      -0.560
5      -0.260
6       0.018
7       0.040
8      -0.460
9      -0.690
10     -0.130
11     -0.270
12     -0.080
13     -0.430
14     -0.170
15     -0.500
16     -0.690
17     -0.060
18     -0.200
19     -0.610
20     -0.370
21      0.090
22      0.190
23     -0.010
24      0.110
25     -0.250
26     -0.210
27     -0.160
28     -0.320
29      0.130
        ...  
2501    0.760
2502    0.690
2503    0.680
2504    0.750
2505    0.560
2506    0.570
2507    0.670
2508    0.800
2509    0.630
2510    0.570
2511    0.780
2512    0.800
2513    0.800

标签: pythonpandasmatplotlib

解决方案


均值是一个聚合函数。它获取一些值并将它们聚合为一个。
在您的情况下,由于每个索引只有一个值,因此平均聚合将为孔数据集输出单个值,当然不能绘制单个值。因此,Seaborn 库仅在需要聚合每个索引的几个值时才绘制平均线 。在这种情况下,Seaborn 还会为您提供相应的置信区间。一个可行的命令示例:

数据集作为图片附加

数据集

打电话时sns.lineplot(y='Flights', x='Week' , data=df)

Seaborn 必须每周汇总几个值才能绘制数据。默认的聚合方法是“均值”,因此这种聚合将产生具有置信区间的平均线。

您可以选择 Pandas 提供的任何 Series 聚合方法,也可以编写自己的方法


推荐阅读