Вы можете использовать функцию matplotlibs step
для этого:
import pandas as pd
import matplotlib.pyplot as plt
предполагается, что ваши данные структурированы так:
df = pd.DataFrame({'In': [1, 1, 1, 2 , 0, 2, 0, 0], 'Out': [0, 0, 1, 0, 1, 0, 1, 1]}, index=['PD', 'PZV', 'PP', 'FW', 'BA', 'IA', 'EA', 'NA'])
In Out
PD 1 0
PZV 1 0
PP 1 1
FW 2 0
BA 0 1
IA 2 0
EA 0 1
NA 0 1
Тогда построение графиков будет
df.plot(kind='bar', stacked=True, rot=0, color=['gold', 'beige'])
и построение линии порога в 90% суммы будет
plt.step(df.index, df.sum(1) * .9, 'firebrick', where='mid', label = 'Ziel: 90%')
добавить легенду:
plt.legend()
ведет к:
