Гистограмма Matplotlib : Проблема с интервалом дат (xaxis) в twinx

#python #pandas #dataframe #matplotlib #pycharm

Вопрос:

Я не понимаю, почему мой фрагмент кода не работает. Я хотел бы иметь ось x с интервалом 1.

 df['Dates'] = pd.to_datetime(df.Dates)

fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'],
       df['Score'],
       color='blue',
       width=2)
date_form = DateFormatter("%d/%m/%Y")
ax.xaxis.set_major_formatter(date_form)
ax.xaxis.set_major_locator(mdates.DayLocator(interval=1))
ax2=ax.twinx()
ax2.plot(df['Dates'],
       df['Price'],
         color = 'black')
plt.show()
 

введите описание изображения здесь

Ответ №1:

В настоящее время ax форматирование даты просто переопределяется ax2.plot , поэтому вам следует применить форматирование даты ax2 вместо ax . Также autofmt_xdate полезно для поворота меток дат:

 df['Dates'] = pd.to_datetime(df['Dates'])

fig, ax = plt.subplots(figsize=(16, 9))
ax.bar(df['Dates'], df['Score'], color='blue', width=1)

ax2 = ax.twinx()
ax2.plot(df['Dates'], df['Price'], color='black')

# apply the date formatting to ax2 instead of ax
date_form = DateFormatter('%d/%m/%Y')
ax2.xaxis.set_major_formatter(date_form)
ax2.xaxis.set_major_locator(mdates.DayLocator(interval=1))

# rotate the date labels
fig.autofmt_xdate(ha='center', rotation=90)
 

Это вывод с некоторыми случайными данными (в будущем рекомендуется вставлять данные в виде текста, чтобы мы могли напрямую копировать реальные данные).: