Проблема заключается в том, что вы сначала строите гистограмму, а затем удваиваете кадры данных, используя ax.plot()
и ax2.plot()
, которые просто отображают соединительные линии.
Решение : Удалить следующую строку
df.plot.bar()
и заменить ax.plot(df)
и ax2.plot(df)
на
df.plot.bar(ax=ax)
df.plot.bar(ax=ax2)
Ниже приведен минимальныйрабочий ответ (исключая импорт) для вас с использованием фиктивного фрейма данных .То же самое будет работать и для вашего случая.
fig = plt.figure(figsize=(8, 6))
df = pd.DataFrame({'count': {0: 88, 1: 67, 2: 10, 3: 16, 4: 18}}).reset_index()
fig, (ax, ax2) = plt.subplots(2, 1, sharex=True, sharey=False)
df.plot.bar(x='index', y='count', legend=False, ax=ax)
df.plot.bar(x='index', y='count', legend=False, ax=ax2)
ax.set_ylim(50,100)
ax2.set_ylim(0,20)
ax.spines['bottom'].set_visible(False)
ax2.spines['top'].set_visible(False)
ax.xaxis.tick_top()
ax.tick_params(labeltop='off') # don't put tick labels at the top
ax2.xaxis.tick_bottom()
Вы можете добавить диагонали / маленькие линии, чтобы выделить пунктирные линии, просто скопировав строки из этого официального примера
Выход