Я не очень знаком с pandas и прорисовкой, но я возился с этим в прошлом. Я пытаюсь построить две линии на одном и том же рисунке, чтобы сравнить данные прошлого года и этого года. Я хочу настроить галочки по своему вкусу, начиная с формата даты, пытаясь сделать его максимально сжатым, поэтому я собираюсь перейти к формату %d-%m
. Вот как я это делаю:
df = pd.read_csv('xxxxx.csv', index_col='date')
df19 = df['2019-01-01':'2019-04-30']
df20 = df['2020-01-01':'2020-04-30']
df19r = df19.rolling(7).mean().dropna()
df20r = df20.rolling(7).mean().dropna()
fig, ax = plt.subplots()
df19r.plot(ax=ax)
df20r.plot(ax=ax)
fig.autofmt_xdate()
fmt = mdates.DateFormatter('%d-%m')
ax.xaxis.set_major_formatter(fmt)
plt.legend(['2019', '2020'], loc='best')
plt.show()
Однако ярлыки не будут отображаться из-за ошибки:
ValueError: DateFormatter found a value of x=0, which is an illegal date. This usually occurs because you have not informed the axis that it is plotting dates, e.g., with ax.xaxis_date()
Я не уверен, где go из-за этого, потому что мои индексы имеют хорошо отформатированные даты:
['2019-01-07' '2019-01-08' '2019-01-09' '2019-01-10' '2019-01-11'
'2019-01-12' '2019-01-13' '2019-01-14' '2019-01-15' '2019-01-16'
'2019-01-17' '2019-01-18' '2019-01-19' '2019-01-20' '2019-01-21'
'2019-01-22' '2019-01-23' '2019-01-24' '2019-01-25' '2019-01-26'
'2019-01-27' '2019-01-28' '2019-01-29' '2019-01-30' '2019-01-31'
'2019-02-01' '2019-02-02' '2019-02-03' '2019-02-04' '2019-02-05'
'2019-02-06' '2019-02-07' '2019-02-08' '2019-02-09' '2019-02-10'
'2019-02-11' '2019-02-12' '2019-02-13' '2019-02-14' '2019-02-15'
'2019-02-16' '2019-02-17' '2019-02-18' '2019-02-19' '2019-02-20'
'2019-02-21' '2019-02-22' '2019-02-23' '2019-02-24' '2019-02-25'
'2019-02-26' '2019-02-27' '2019-02-28' '2019-03-01' '2019-03-02'
'2019-03-03' '2019-03-04' '2019-03-05' '2019-03-06' '2019-03-07'
'2019-03-08' '2019-03-09' '2019-03-10' '2019-03-11' '2019-03-12'
'2019-03-13' '2019-03-14' '2019-03-15' '2019-03-16' '2019-03-17'
'2019-03-18' '2019-03-19' '2019-03-20' '2019-03-21' '2019-03-22'
'2019-03-23' '2019-03-24' '2019-03-25' '2019-03-26' '2019-03-27'
'2019-03-28' '2019-03-29' '2019-03-30' '2019-03-31' '2019-04-01'
'2019-04-02' '2019-04-03' '2019-04-04' '2019-04-05' '2019-04-06'
'2019-04-07' '2019-04-08' '2019-04-09' '2019-04-10' '2019-04-11'
'2019-04-12' '2019-04-13' '2019-04-14' '2019-04-15' '2019-04-16'
'2019-04-17' '2019-04-18' '2019-04-19' '2019-04-20' '2019-04-21'
'2019-04-22' '2019-04-23' '2019-04-24' '2019-04-25' '2019-04-26'
'2019-04-27' '2019-04-28' '2019-04-29' '2019-04-30']
Дополнительный вопрос: мне удалось изменить метки в легенде с помощью plt.legend(['2019', '2020'], loc='best')
, но что, если порядок изменится? Как я могу построить DataFrame при переименовании его столбца?