将索引转换为日期时间对象后,MatplotLib 无法正确绘制熊猫时间序列 1 分钟数据

Posted

技术标签:

【中文标题】将索引转换为日期时间对象后,MatplotLib 无法正确绘制熊猫时间序列 1 分钟数据【英文标题】:MatplotLib not properly plotting pandas timeseries 1 minute data after converting index to datetime object 【发布时间】:2021-09-25 02:32:35 【问题描述】:

在将索引转换为日期时间对象后,我无法绘制时间序列 1 分钟的数据。

这是将索引转换为日期时间对象之前的图表。

这是使用将索引更改为日期时间对象后的绘制图表 df.index = pd.to_datetime(df.index)

我不确定这里发生了什么,但是当我转换为 1 分钟的日期时间对象时,看起来 Matplotlib 缺少某些值。

这是https://easyupload.io/koh8s6的数据样本

如果有人能提供帮助将不胜感激。

【问题讨论】:

这可能是因为您的数据在时间上不连续。比如数据可能在昨天下午 5 点结束,第二天早上 8 点开始,是这样吗? 一点也不,数据完全没问题。我刚刚检查了它 你检查过你的数据是按照x轴数据排序的吗? 是的,数据非常好,而且数据似乎排序良好。当索引只是类型字符串时,图表完美绘制。这只发生在使用 pd.to_date_time 将索引更改为日期时间对象时。 【参考方案1】:

这对我来说似乎工作得很好。您确定使用日期时间类型作为时间索引吗?

df = pd.read_csv('vixdatasample_to_SO.csv', index_col=[1])
df.index = pd.to_datetime(df.index)
df.iloc[:, 2:6].plot()
                     Unnamed: 0  Unnamed: 0.1   Open  Close   High    Low  Volume  ma  std  upper_band  lower_band
Time                                                                                                              
2021-01-19 08:15:00           0             0  23.03  23.01  23.03  23.01     0.0 NaN  NaN         NaN         NaN
2021-01-19 08:16:00           1             1  23.03  23.03  23.05  23.01     0.0 NaN  NaN         NaN         NaN
2021-01-19 08:17:00           2             2  23.04  23.04  23.06  23.04     0.0 NaN  NaN         NaN         NaN
2021-01-19 08:18:00           3             3  23.03  23.03  23.03  23.03     0.0 NaN  NaN         NaN         NaN
2021-01-19 08:19:00           4             4  23.05  23.06  23.06  23.05     0.0 NaN  NaN         NaN         NaN

【讨论】:

以上是关于将索引转换为日期时间对象后,MatplotLib 无法正确绘制熊猫时间序列 1 分钟数据的主要内容,如果未能解决你的问题,请参考以下文章

我找不到将熊猫时间戳转换为 matplotlib 图的日期的方法

索引转换为熊猫日期时间后,绘图图表是一团糟

java 字符串转换成日期

将日期时间格式的索引转换为仅限日期的python pandas

python df:将日期索引从毫秒转换为天

如何将 Matplotlib 图形转换为 PIL Image 对象(不保存图像)