在python中着色timeseries绘图

2024-09-24 04:29:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,数据示例如下所示

我正试图给timeseries地块周围的区域遮阴。我试过使用fill_between函数,但不起作用

我试过:

# load the file
df = pd.read_csv(r"C:\Users\sam\data.csv", usecols=['Hour','Forecast'],header=0)

X1=df.forecast
mu = X1.mean
sigma = X1.std

timestep=df.Hour

# ss=mu1+sigma1
# kk=mu1-sigma1
 
plt.fill_between(timestep, mu, sigma, alpha=0.2) #this is the shaded error

sample_data.csv

Hour Forecast
1   0.428732899
2   0.501308875
3   0.491805242
4   0.392900424
5   0.442624008
6   0.411723392
7   0.397455466
8   0.400126642
9   0.444411425
10  0.423408925
11  0.759687642
12  2.166908125
13  2.153370175
14  2.053740002
15  2.095005501
16  2.153214908
17  2.210168766
18  2.122148284
19  1.9024695
20  2.255718026
21  2.258879807
22  0.480089583
23  1.551103332
24  1.512505375

预期输出:

enter image description here


Tags: csvthedataframedfdatabetweenfillsigma
1条回答
网友
1楼 · 发布于 2024-09-24 04:29:16

线周围的阴影区域表示95%的置信区间为了获得该区域,每个时间点应有多个观测值,因此可以计算每个时间点的标准偏差和CI。但在您提供的数据中,每个时间点只有一个观测值。
您可以通过计算标准偏差和总和并从要绘制的列中减去它来绘制类似的绘图注意这不是置信区间(需要更多观察),而是每个时间点的平均值周围2倍标准偏差的区间。此外,它沿时间轴保持恒定宽度。
我真的怀疑这是一个有用的图,因为面积宽度在时间内是恒定的,面积宽度是标准偏差的2倍,标准偏差是沿时间计算的。简而言之:为了计算一个合适的置信区间,你不应该使用这个图并为每个时间点提供更多的观察值

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r"data/data.csv", usecols = ['Hour', 'Forecast'], header = 0)

X1 = df.Forecast
mu = X1.mean()
sigma = X1.std()

timestep = df.Hour

X1_plus_sigma = X1 + sigma
X1_minus_sigma = X1 - sigma

plt.plot(timestep, X1, color = 'blue')
plt.fill_between(timestep, X1_plus_sigma, X1_minus_sigma, alpha = 0.2, color = 'blue')

plt.show()

enter image description here

相关问题 更多 >