#python #python-3.x #pandas #dataframe #matplotlib
Вопрос:
Мне нужно построить 2 линии с минимальной и максимальной температурой в день
Мой фрейм данных выглядит так:
Date min max min2015 max2015
0 01-01 -160 156 -133 11
1 01-02 -267 139 -122 39
2 01-03 -267 133 -67 39
3 01-04 -261 106 -88 44
Столбец даты, который я отформатировал только днем и месяцем, а не годом, причина в том, что это СМЕСЬ и СОЧЕТАНИЕ температур между 2004-2014 годами, вот почему года нет.
поэтому я попытался построить такой сюжет:
fig, ax = plt.subplots(figsize=(10, 6))
axb = ax.twinx()
# Same as above
ax.set_xlabel('Date')
ax.set_ylabel('Temp')
ax.set_title('Min and Max temperature 2004-2014')
ax.grid(True)
# Plotting on the first y-axis
ax.plot(new_df.Date, new_df['min'], color='tab:orange', label='Min')
ax.plot(new_df.Date, new_df['max'], color='tab:olive', label='Max')
Но я понимаю это:
ValueError: could not convert string to float: '12-31'
Комментарии:
1. Pandas 1.2.4, Matplotlib 3.3.4 — не удается воспроизвести проблему.
Ответ №1:
функция ‘plot’ не может идентифицировать строковый тип, вместо этого вы можете использовать функцию ‘plot_date’.
plt.xlabel('Date')
plt.ylabel('Temp')
plt.title('Min and Max temperature 2004-2014')
plt.grid(True)
plt.plot_date(['01-01', '01-02', '01-03'], [13, 15, 12], color='tab:orange', label='Min')
plt.show()
тогда вы можете получить такую картинку, как
этот
Комментарии:
1. спасибо, если я заменю plot на plot_date, то получу следующее: ошибка: объект ‘str’ не имеет атрибута ‘toordinal’
2. возможно, вы можете попробовать обновить свою версию matplotlib.
3. работаем над этим: установка pip —обновление matplotlib