因此,对于信号和背景类别,分类为信号的那些数据中,大多数是正确的,但实际上某些数据是背景,而分类为背景的那些数据中,大多数是正确的,但某些数据实际上是信号。现在,这意味着我想绘制一个条形信号,并让信号(红色)构成大多数条形,背景(蓝色)构成条形的少数,我想绘制另外一个条形以用于背景和使其背景(蓝色)占条形的大部分,而信号(红色)占条形的少数。
我有以下代码,但是第二个条(背景)中的颜色顺序需要交换。怎么做? (我也在考虑开设两个以上班级的可能性。)
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()
答案 0 :(得分:2)
如果参数列表的长度与条形数量匹配,则可以为参数列表添加颜色。
color=["red","blue"]
p1 = plt.bar(ind, fractions_correct, width, color=color)
color=["blue","red"]
p2 = plt.bar(ind, fractions_incorrect, width, bottom=fractions_correct, color=color)
答案 1 :(得分:1)
最快的解决方案是添加要映射到绘图的颜色列表:
p1 = plt.bar(ind, fractions_correct, width, color=['red','blue'])
p2 = plt.bar(ind, fractions_incorrect, width, bottom=fractions_correct, color=['blue','red'])
一种更全面的方法是更改绘图方法,由于我不知道您要解决的问题的规模,我暂时不会介绍这种方法。