Я строю график «ошибка прогнозирования класса», в котором модель пытается классифицировать данные в один из двух классов. График показывает долю каждого класса, который состоит из правильного класса и другого класса.
Таким образом, для классов сигнала и фона этих данных, классифицированных как сигнал, большинство из них правильные, но некоторые данныена самом деле являются фоновыми, и из этих данных, классифицированных как фоновые, большинство из них верны, но некоторые данные фактически являются сигнальными. Теперь это означает, что я хочу построить одну полосу для сигнала и чтобы сигнал (красный) составлял большую часть полосы, а фон (синий) составлял меньшую часть полосы, и я хочу построить еще одну полосу для фона ичтобы фон (синий) составлял большую часть полосы, а сигнал (красный) составлял меньшую часть полосы.
У меня есть следующий код, но порядок цветов во второй полосе (фон)нужно поменять местами. Как это может быть сделано? (Я также думаю о возможности иметь более двух классов.)
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["figure.figsize"] = [10, 10]
cc0 = 39695 # classified correctly background
ci0 = 18595 # classified incorrectly background
cc1 = 38801 # classified correctly signal
ci1 = 19556 # classified incorrectly signal
fractions_correct = (cc0, cc1)
fractions_incorrect = (ci0, ci1)
width = 0.9
ind = np.arange(2)
p1 = plt.bar(ind, fractions_correct, width, color='red')
p2 = plt.bar(ind, fractions_incorrect, width, bottom=fractions_correct, color='blue')
plt.xlabel('classification by model')
plt.ylabel('class case abundances')
plt.xticks(ind, ('signal', 'background'))
plt.yticks([])
plt.legend((p2[0], p1[0]), ('background', 'signal'), loc='center left', bbox_to_anchor=(1, 0.5));
plt.show()