在 python 中对时间序列图进行着色
shading the timeseries plot in python
我有一个数据框,数据示例如下所示。
我正在尝试遮蔽时间序列图周围的区域。我尝试使用 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
预期输出:
线条周围的阴影区域代表 95% 的置信区间。 为了得到这个区域,您应该对每个时间点进行多次观察,因此可以计算每个时间点的标准偏差和 CI。但是在您提供的数据中,每个时间点只有一个观察值。
您可以通过计算标准偏差和总和并从要绘制的列中减去它来绘制 similar 图。 注意! 这不是置信区间(您需要更多观察),它是每个时间点均值周围 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()
我有一个数据框,数据示例如下所示。
我正在尝试遮蔽时间序列图周围的区域。我尝试使用 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
预期输出:
线条周围的阴影区域代表 95% 的置信区间。 为了得到这个区域,您应该对每个时间点进行多次观察,因此可以计算每个时间点的标准偏差和 CI。但是在您提供的数据中,每个时间点只有一个观察值。
您可以通过计算标准偏差和总和并从要绘制的列中减去它来绘制 similar 图。 注意! 这不是置信区间(您需要更多观察),它是每个时间点均值周围 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()