Добавление областей и линий на график из фрейма данных

Мне требуется нарисовать диаграмму Парето. Делаю это следующим образом:

data = pd.DataFrame({"Вид дефекта":["А","Б","В","Г","Д","Е","Ж","Прочее"], "Кол-во":[11,2,333,4,15,6,777,8]})
data=data.set_index("Вид дефекта")
data = pd.concat([data[data.index!='Прочее'].sort_values(by='Кол-во',ascending = False), data[data.index=='Прочее']])
data['Накопленная частота'] = 100 *data['Кол-во'].cumsum() / data['Кол-во'].sum()
fig, axes = plt.subplots()
ax1 = data.plot(use_index=True, y='Кол-во',  kind='bar', ax=axes)
ax2 = data.plot(use_index=True, y='Накопленная частота', marker='D', color="C1", kind='line', ax=axes, secondary_y=True)
ax2.set_ylim([0,110])

Получаю следующий рисунок:

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

Однако к этой диаграмме мне требуется добавить два элемента — горизонтальную пунктирную линию и область принятия решений. Где пунктирная линия = на уровне 80% по шкале справа (ax2) А в область принятия решений попадают все значения, где накопленная частота<80% следующая за последним

Пример-как это должно быть:

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

Для решения задачи дописала следующее:

data['Порог']=80
data['Область принятия решений']=np.where((data['Порог'] <= data['Накопленная частота']) & (data['Порог'].shift(1) <= data['Накопленная частота'].shift(1)), 0, 100)

Подскажите, как теперь это добавить на тот же график


Ответы (1 шт):

Автор решения: CrazyElf

Я только не смог с легендой доразобраться, как её подвинуть, чтобы нормально было видно:

ax3 = data.plot(use_index=True, y='Порог', color="gray", kind='line', linestyle='dashed', ax=axes, secondary_y=True)
ax4 = data.plot(use_index=True, y='Область принятия решений', color="yellow", kind='area', ax=axes, secondary_y=True, alpha=0.1)

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

→ Ссылка