Для отображения данных на основе даты в matplotlib необходимо скопировать данные в нужный формат.
Один из способов - сначала преобразовать ваши данные в datetime
объектов, для отметки времени в эпоху вы должны использовать datetime.datetime.fromtimestamp()
.
Вы должны затем преобразовать datetime
объектов в нужном формате для matplotlib, это может обрабатываться с использованием matplotlib.date.date2num
.
В качестве альтернативы вы можете использовать matplotlib.dates.epoch2num
и пропустить преобразовании даты datetime
объектов, в первую очередь (в то время как это будет отвечать вашим потребительной случае лучше сначала, я бы рекомендовал пытаться сохранить дату дату, основанную на datetime
объектов столько, сколько вы можете при работе, это сэкономит вам головную боль в долгосрочной перспективе).
Как только у вас есть данные в правильном формате, вы можете построить его с помощью plot_date
.
Наконец, чтобы отформатировать ось x по желанию, вы можете использовать объект matplotlib.dates.DateFormatter
, чтобы выбрать, как будут выглядеть ваши тики.
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import numpy as np
# Generate some random data.
N = 40
now = 1398432160
raw = np.array([now + i*1000 for i in range(N)])
vals = np.sin(np.linspace(0,10,N))
# Convert to the correct format for matplotlib.
# mdate.epoch2num converts epoch timestamps to the right format for matplotlib
secs = mdate.epoch2num(raw)
fig, ax = plt.subplots()
# Plot the date using plot_date rather than plot
ax.plot_date(secs, vals)
# Choose your xtick format string
date_fmt = '%d-%m-%y %H:%M:%S'
# Use a DateFormatter to set the data to the correct format.
date_formatter = mdate.DateFormatter(date_fmt)
ax.xaxis.set_major_formatter(date_formatter)
# Sets the tick labels diagonal so they fit easier.
fig.autofmt_xdate()
plt.show()
Он дал мне следующую ошибку: AttributeError: объект 'Рисунок' не имеет атрибута 'autoftm_xdate' – Marcio
Вы скопировали код неправильно, так как у меня есть 'fig.autofmt_xdate()' not 'fig.autoftm_xdate()'. – Ffisegydd
Несогласованное использование 'matplotlib.dates' и' matplotlib.date'. Правильное использование - 'matplotlib.dates'. – kas