Изменение форматирования оси datetime.time в matplotlib - PullRequest
1 голос
/ 14 февраля 2020

Я пытаюсь изменить форматирование оси x на% H:% M, в то время как xticklabel все стало 00:00. xs выглядит следующим образом:

[datetime.time(15, 8, 35), datetime.time(15, 8, 36), datetime.time(15, 8, 37)]

Я попробовал следующий скрипт:

import matplotlib.dates as mdate
import matplotlib.pyplot as plt

dates = ['15:08:35', '15:08:36', '15:08:37']
xs = [datetime.strptime(d, '%H:%M:%S').time() for d in dates]
ys = range(len(xs))

plt.gca().xaxis.set_major_formatter(mdate.DateFormatter('%H:%M'))
plt.gca().xaxis.set_major_locator(mdate.DayLocator())

# Plot
plt.plot(xs, ys)
plt.gcf().autofmt_xdate()
plt.show()

И изображение выглядит так: Пожалуйста, нажмите

Как я могу изменить xticklabel в желаемое форматирование?

1 Ответ

1 голос
/ 14 февраля 2020

Matplotlib может обрабатывать datetime -объекты проще, чем time объекты. Вы можете удалить .time(). Этот код должен работать, я отредактировал даты, чтобы показать изменяющиеся значения x на оси.

import matplotlib.dates as mdate
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

dates = ["15:05:35", "16:08:36", "17:09:37"]
# remove .time() from strptime
xs = [datetime.strptime(d, "%H:%M:%S") for d in dates]

ys = range(len(xs))

plt.gca().xaxis.set_major_formatter(mdate.DateFormatter("%H:%M"))
plt.gca().xaxis.set_major_locator(mdate.DayLocator())

# show all x-values on the x-axis
plt.xticks(xs)
# Plot
plt.plot(xs, ys)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...