Добавление областей и линий на график из фрейма данных
Мне требуется нарисовать диаграмму Парето. Делаю это следующим образом:
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)


