Ошибка атрибута временной шкалы
Я пытаюсь нарисовать график, но получаю ошибку:
AttributeError: 'numpy.datetime64' object has no attribute 'toordinal'
Я попробовал некоторые рекомендуемые решения (converter & pandacnv), но они ничего не изменили.
Вот код:
import pandas as pd
import datetime as da
import matplotlib.dates as dt
import matplotlib.pyplot as plt
from pandas.tseries import converter
converter.register()
import pandas.plotting._converter as pandacnv
pandacnv.register()
# Data
df = pd.DataFrame({'A': [da.datetime(2017,1,5,9,8), da.datetime(2017,1,5,9,9), da.datetime(2017,1,7,9,19), da.datetime(2017,1,7,9,19), da.datetime(2017,1,7,9,19), da.datetime(2017,2,7,9,19), da.datetime(2017,2,7,9,19)],
'B': [da.datetime(2017,1,5,9,9), da.datetime(2017,1,5,9,12), da.datetime(2017,1,7,9,26), da.datetime(2017,1,7,9,20), da.datetime(2017,1,7,9,21), da.datetime(2017,2,7,9,23), da.datetime(2017,2,7,9,25)],
'C' :[1, 2, 3, 4, 5, 6, 7 ]})
# Visualisation
ax = plt.subplot()
ax = plt.hlines(df.C,
dt.date2num(df.A),
dt.date2num(df.B))
0 ответов
Если ваша цель - построить горизонтальные линии, используя A
а также B
столбцы как ось х и C
Столбец как ось Y, вы можете напрямую использовать массивы данных. добавленной 1
день до B
столбец, так как время меняется очень минимально, чтобы заметить, что на графике:
df['B'] = df['B']+pd.Timedelta("1D")
ax = plt.subplot()
ax.hlines(df.C.values, df.A.values, df.B.values, lw=2)
plt.show()
Выходной участок:
https://s tackru.com/images/5c05953078f400f740d5415162be9aa869101106.png
Я не видел никаких проблем с типом данных. Проблемой может быть дата в столбце B. В качестве альтернативы @Sandeep Kadapa, вы можете просто установить максимальную дату как xmax. Например:
ax = plt.subplot()
ax.hlines(df.C.values, df.A.values, xmax='2017-01-02')
plt.show()