Matplotlib timedelta64 индекс как ось X - PullRequest
0 голосов
/ 06 июня 2018

Я хочу построить график данных, у которого есть индекс 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)

Когда я строю этот кадр данныхпросто с помощью:

plt.plot(test)

Я ожидал бы получить timedeltaindex на оси X.Однако вместо этого я просто получаю это по оси X:

enter image description here

Как я могу вместо этого получить TimedeltaIndex по оси X?

1 Ответ

0 голосов
/ 06 июня 2018

Прежде всего вы можете использовать панд непосредственно для построения графика данных.Т.е. вместо plt.plot(df) вы можете использовать

df.plot()

Это покажет правильную временную дельту на оси.

Если по какой-либо причине вам нужно использовать 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()
...