我试图绘制具有不同条形大小的数据组,并且可能具有不同的组大小.如何将属于同一组的条形图(显示为相同的颜色)分组,以便它们并排?(与此类似,除了相同的颜色应该是并排的)
width = 0.50 groupgap=2 y1=[20,80] y2=[60,30,10] x1 = np.arange(len(y1)) x2 = np.arange(len(y2))+groupgap ind = np.concatenate((x1,x2)) fig, ax = plt.subplots() rects1 = ax.bar(x1, y1, width, color='r', ecolor= "black",label="Gender") rects2 = ax.bar(x2, y2, width, color='b', ecolor= "black",label="Type") ax.set_ylabel('Population',fontsize=14) ax.set_xticks(ind) ax.set_xticklabels(('Male', 'Female','Student', 'Faculty','Others'),fontsize=14) ax.legend()
使用类别(groupgap
)之间的差距的想法确实是一种方法.你只需要添加第一组的长度:
x2 = np.arange(len(y2))+groupgap+len(y1)
这是我使用的完整示例groupgap=1
:
import matplotlib.pyplot as plt import numpy as np width = 1 groupgap=1 y1=[20,80] y2=[60,30,10] x1 = np.arange(len(y1)) x2 = np.arange(len(y2))+groupgap+len(y1) ind = np.concatenate((x1,x2)) fig, ax = plt.subplots() rects1 = ax.bar(x1, y1, width, color='r', edgecolor= "black",label="Gender") rects2 = ax.bar(x2, y2, width, color='b', edgecolor= "black",label="Type") ax.set_ylabel('Population',fontsize=14) ax.set_xticks(ind) ax.set_xticklabels(('Male', 'Female','Student', 'Faculty','Others'),fontsize=14) plt.show()