matplotlib 在时间序列中绘制数组序列

nzrxty8p  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个csv,它包含一系列从零到三个值的numpy浮点数组。每个数组对应一个datetime。例如:

x = [2023-03-21 10:11:09, 2023-03-21 10:11:40, 2023-03-21 10:12:10]
y = [[1.72, 1.7, 1.68],[], [3.55]]

我想按时间顺序绘制所有的序列,在同一个图表上的值类似于置信区间,但在适用的情况下,每个数组中的值作为上限和下限。显然,有些数组没有这个,有些则什么也没有。
由于大多数数组都是三个浮点数,因此图形应该类似于:How to plot a time series array, with confidence intervals displayed, in python? .
我在这个网站或其他任何地方都找不到类似的东西。

ve7v8dk2

ve7v8dk21#

您可以在Python中使用matplotlib库。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.read_csv('filename.csv', parse_dates=[0], index_col=[0])

dates = df.index.to_pydatetime()

upper_bounds = []
lower_bounds = []
for row in df.itertuples():
    values = row[1]
    if len(values) == 0:
        upper_bounds.append(np.nan)
        lower_bounds.append(np.nan)
    elif len(values) == 1:
        upper_bounds.append(values[0])
        lower_bounds.append(values[0])
    else:
        upper_bounds.append(max(values))
        lower_bounds.append(min(values))

plt.errorbar(dates, df.mean(axis=1), yerr=[df.mean(axis=1)-lower_bounds, upper_bounds-df.mean(axis=1)], fmt='o', capsize=4)

plt.xlabel('Date')
plt.ylabel('Value')
plt.show()

相关问题