matplotlib分组条颜色更改

matplotlib分组条颜色更改,matplotlib,graph,data-visualization,Matplotlib,Graph,Data Visualization,我试图用分组条比较A组和B组,但A组必须有相同的颜色,B组必须有不同的颜色和图例。我以某种方式创建了图形,但不确定如何更改每组B条形图的颜色 import matplotlib import matplotlib.pyplot as plt import numpy as np labels = ['M1', 'A1', 'M2', 'A2', 'M3', 'A3', 'M4', 'A4', 'M5', 'A5'] A_group = [20, 34, 30, 35, 27, 17,

我试图用分组条比较A组和B组,但A组必须有相同的颜色,B组必须有不同的颜色和图例。我以某种方式创建了图形,但不确定如何更改每组B条形图的颜色

import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np


labels = ['M1', 'A1', 'M2', 'A2', 'M3', 'A3', 'M4', 'A4', 'M5', 'A5'] 
A_group = [20, 34, 30, 35, 27, 17, 64, 23, 47, 52] 
B_group = [25, 32, 34, 20, 25, 76, 33, 54, 16, 21]

x = np.arange(len(labels))  # the label locations 
width = 0.35  # the width of the bars

fig, ax = plt.subplots() 
rects1 = ax.bar(x - width/2, A_group, width, label='A group') 
rects2 = ax.bar(x + width/2, B_group, width, label='B group')

# Add some text for labels, title and custom x-axis tick labels, etc. 

ax.set_ylabel('Accuracy') 
ax.set_title('Test') 
ax.set_xticks(x) 
ax.set_xticklabels(labels) 
ax.legend()

ax.bar_label(rects1, padding=3) 
ax.bar_label(rects2, padding=3) 
plt.xticks(rotation=30, ha='right') 
plt.ylim(0, 100) 

fig.tight_layout()
plt.show()
现在,我的图表如下所示:

我想把我的图做成这样。下面是一个使用powerpoint的示例。


任何帮助都将不胜感激。提前谢谢。

尝试在
B_组中逐个绘制条形图

fig, ax = plt.subplots()
ax.bar(x-width/2, A_group, width=width,label='A Group')

cmap = plt.get_cmap('tab20')
ax.set_prop_cycle(color=[cmap(k) for k in x+1])
for i in x:
    ax.bar(i+width/2, B_group[i], width=width)
    
输出:


colring B组的标准是什么?如果你是这个意思,任何颜色都可以。。只要它们与A组不同。2个分组的条形图是一个子类别,所以A组需要1种颜色,B组总共需要5种颜色。非常感谢,但是有没有办法减少颜色的数量?在B_组中?是的,更改为,例如,
color=[cmap(k//2+1)表示x中的k]
in
ax。set_prop_cycle
将每两个条改变颜色,类似于您的预期输出。