如何在 Matplotlib 中并排绘制具有相同 X 坐标的条形图?
matplotlibserver side programmingprogramming更新于 2025/7/4 11:37:17
要在 Matplotlib 中并排绘制具有相同 X 坐标(G1、G2、G3、G4 和 G5)的条形图,我们可以采取以下步骤 −
创建以下列表 – labels、men_means 和 women_means 分别包含不同的数据元素。
使用 numpy.arrange() 方法返回给定区间内等距分布的值。
设置 width 变量,例如 width=0.35。
使用 方法创建 和 变量,其中默认的 nrows 和 ncols 均为 1。
条形图以给定的 *align* 位置定位在 *x* 处。其尺寸由 *height* 和 *width* 指定。垂直基线为*底部*(默认值为 0),因此使用 plt.bar() 方法创建 rect1 和 rect2。
使用 plt.ylabel() 方法设置 Y 轴标签。
使用 set_title() 方法设置坐标轴的标题。
使用 set_xticks() 方法获取或设置 X 轴的当前刻度位置和标签。
使用 set_xticklabels() 方法设置网格的 X 轴刻度标签。
使用 legend() 方法在图形上放置图例。
注释使用 autolabel()方法(用户定义方法)创建了带有标签的条形图(rect1 和rect2)。
要显示该图形,请使用plt.show()方法。
示例
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
labels = ['G1', 'G2', 'G3', 'G4', 'G5']
men_means = [20, 34, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]
x = np.arange(len(labels))
width = 0.35
fig, ax = plt.subplots()
rects1 = ax.bar(x - width / 2, men_means, width, label='Men')
rects2 = ax.bar(x + width / 2, women_means, width, label='Women')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
def autolabel(rects):
for rect in rects:
height = rect.get_height()
ax.annotate('{}'.format(height),
xy=(rect.get_x() + rect.get_width() / 2, height),
xytext=(0, 3), # 3 points vertical offset
textcoords="offset points",
ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
plt.show()
输出


