ValueError: год 0 находится вне диапазона - PullRequest
0 голосов
/ 01 апреля 2020

Я изо всех сил пытаюсь построить простой временной ряд с морским рожком и не могу понять, почему это не работает. Мой фрейм данных time_series содержит ежедневные данные о пациентах с 2015 по 2019 год и также имеет индекс datetime. Выглядит это так:

            patients
Date                
2015-01-04        49
2015-01-05        51
2015-01-06        48
2015-01-07        30
2015-01-08        27

Я пытаюсь построить точечный график, однако при его построении , он начинается в 2000 году и, следовательно, все точки данных находятся справа от графика. Я попытался противостоять этому, установив xlim, но получаю странную ошибку. Мой код таков:

import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x=time_series.index, y=time_series['patients'])
plt.xlim(2015,2019)

Это ошибка, которую я не понимаю, поскольку у меня нет года '0':

ValueError: year 0 is out of range

Может кто-нибудь помочь мне здесь. Большое спасибо

1 Ответ

0 голосов
/ 01 апреля 2020
  • Кажется, проблема в том, что информация datetime из df.index преобразуется в порядковое представление даты и времени для графика locs.
  • Если вы используете locs, labels = plt.xticks(), прокомментируйте out plt.xlim и напечатайте locs, вы увидите, что они array([729390.00000485, 730120.00000485, 730851.00000485, 731581.00000485, 732312.00000485, 733042.00000485, 733773.00000485, 734503.00000485, 735234.00000485, 735964.00000485]). Таким образом, когда вы устанавливаете plt.xlim(2015, 2019), вы не находитесь в диапазоне графика locs. Годы - это просто метки.
  • С учетом вашего образца данных с индексом даты и времени
from datetime import date, datetime

# determine ordinal value for desired date range
print(date.toordinal(datetime(2015, 1, 1, 0, 0)))
>>>735599
print(date.toordinal(datetime(2019, 1, 1, 0, 0)))
>>>737060

chart = sns.scatterplot(x=df.index, y=df['patients'])
plt.xlim(735599, 737060)

plt.setp(chart.get_xticklabels(), rotation=45)
plt.show()

enter image description here

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