Matplotlib timedelta64索引作为x轴

Fra*_*ank 3 python matplotlib timedelta spyder

我想绘制一个数据帧,该数据帧的timedelta64索引在x轴上具有索引。

索引如下所示:

In [75]: test.index
Out[75]: 
TimedeltaIndex([       '00:00:00', '00:00:00.020000', '00:00:00.040000',
                '00:00:00.060000', '00:00:00.080000', '00:00:00.100000',
                '00:00:00.120000', '00:00:00.140000', '00:00:00.160000',
                '00:00:00.180000',
                ...
                '07:29:31.660000', '07:29:31.680000', '07:29:31.700000',
                '07:29:31.720000', '07:29:31.740000', '07:29:31.760000',
                '07:29:31.780000', '07:29:31.800000', '07:29:31.820000',
                '07:29:31.840000'],
               dtype='timedelta64[ns]', name='master', length=923486, freq=None)
Run Code Online (Sandbox Code Playgroud)

当我简单地使用以下方式绘制此数据框时:

plt.plot(test)
Run Code Online (Sandbox Code Playgroud)

我希望在x轴上获得timedeltaindex。但是,相反,我只是在x轴上得到这个:

在此处输入图片说明

如何在x轴上获取TimedeltaIndex?

Imp*_*est 5

首先,您可以直接使用熊猫来绘制数据。即代替plt.plot(df)你可以使用

df.plot()
Run Code Online (Sandbox Code Playgroud)

这将在轴上显示正确的时间增量。

如果由于某种原因需要使用matplotlib进行绘图,例如由于时间戳记间隔不相等,则需要将转换TimedeltaIndex为绝对日期时间。选择一些(任意)开始,您可以将增量添加到开始以获取绝对日期时间。

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

index = pd.to_timedelta(np.arange(50,100), unit='s')

df = pd.DataFrame(np.arange(50), index=index)

start=pd.Timestamp('20180606')
plt.plot(start+df.index, df)

plt.show()
Run Code Online (Sandbox Code Playgroud)