问题描述
我有一些数据排列为二维 numpy 数组。
数据有4列,对应统计:
- 分钟
- 最大
- 平均值 + 标准差
- 平均值 - 标准差
我想用蜡烛图绘制这些图。据我所知,使用 matplotlib 执行此操作的唯一方法是使用 mplfinance
包。
我已使用以下方法将我的数据转换为 Pandas 数据框:
data_frame = pandas.DataFrame(data_in,columns=['Low','High','Open','Close'])
并尝试使用
绘图mplfinance.plot(data_frame,type='candle')
但是这个错误导致:
raise TypeError('Expect data.index as DatetimeIndex')
所以我想我需要有某种包含日期/时间数据的列。
我之前没有使用过这个包,所以我不确定我在这里做什么。
我可以向我的输入数据添加日期/时间戳,尽管这有点不方便并且需要我更改很多其他脚本。
数据来自一些传感器,这些传感器以(大约)固定的时间间隔进行采样。 (获取样本的确切时间不是特别重要。)
因此我有 4 列数据要绘制,并且数据是连续的。
(注意,为了计算最小值、最大值、平均值、sd 等,进行了一些预处理。同样,这不是至关重要的,并且基本上使时间信息无关紧要。)
是否有一种方法可以通过指定数据“按顺序”来绘制蜡烛图,并且 x 轴应该类似于“从 1 到 N”,其中 N 是数据中的样本数。
解决方法
您可以尝试以下几点:
-
matplotlib boxplot ... 不是烛台,但类似。
-
照例使用 mplfinance,并生成从 1 月 1 日开始的任意日期时间索引,并使用
%j
(一年中的某天)日期时间格式:
data_frame = pandas.DataFrame(data_in,columns=['Low','High','Open','Close'])
data_frame.index = pandas.date_range('1/1/2021',periods=(len(data_frame))
mplfinance.plot(data_frame,type='candle',datetime_format='%j')
希望有帮助。完全披露:我是 mplfinance 库的维护者。