[英]matplotlib uneven group size bar charts side-by-side
I am trying to plot groups of data which have different bar sizes and may have different group sizes. 我试图绘制具有不同条形大小的数据组,并且可能具有不同的组大小。 How can I group the bars that belong to the same groups (shown as the same color) so that they are side by side?
如何将属于同一组的条形图(显示为相同的颜色)分组,以便它们并排? (Similar to this , except the same colors should be side-by-side)
(与此类似,除了相同的颜色应该是并排的)
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()
The idea of using a gap between the categories ( groupgap
) is indeed a way to go. 使用类别之间的差距(
groupgap
)的想法确实是一种方法。 You would just have to add the length of the first group as well: 你只需要添加第一组的长度:
x2 = np.arange(len(y2))+groupgap+len(y1)
Here is the complete example where I used groupgap=1
: 这是我使用
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.