Я пытаюсь отобразить категориальные данные в matplotlib со строковыми записями, которые выглядят как даты, но не являются датами. Matplotlib пытается автоматически преобразовать строку в объект datetime, но не удается. Как я могу заставить matplotlib обрабатывать категории как строки и предотвращать попытки преобразования строки в объект datetime?
Вот мой пример:
import matplotlib.pyplot as plt
categories = ['2019-20', '2020-21']
vals = [5, 10]
plt.plot(categories, vals)
Что дает
ValueError: could not convert string to float: '2019-20'
<...snip...>
calendar.IllegalMonthError: bad month number 20; must be 1-12
Для чего это стоит, в моем примере строки представляют академические c годы (2019-2020 и 2020-2021), но matplotlib предполагает, что они являются датами в форме YYYY-MM, и выдает ошибку и когда пытаясь преобразовать «20» и «21» в действительный месяц.
Если я изменю категории на ['2019-2020', '2020-2021'], код работает нормально (matplotlib больше не предполагает строки представляют объект даты и времени).
import matplotlib.pyplot as plt
categories = ['2019-2020', '2020-2021']
vals = [5, 10]
plt.plot(categories, vals)
Но я предпочитаю использовать более короткую версию YYYY-YY, а не более длинную YYYY-YYYY.