如何在 Matplotlib 中为条形图添加分组标签?


要为条形图创建分组标签,我们可以采取以下步骤:

  • 为**标签**、**men_means** 和 **women_means** 创建包含不同数据元素的列表。

  • 使用**numpy.arrange()** 方法返回给定区间内均匀分布的值。

  • 设置宽度变量,即 **width=0.35**。

  • 使用**subplots** 方法创建**fig** 和**ax** 变量,其中默认的 nrows 和 ncols 为 1。

  • 条形图位于 *x* 处,并具有给定的 *align* 对齐方式。其尺寸由 *height* 和 *width* 给定。垂直基线为 *bottom*(默认为 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()

输出

更新于:2021年5月6日

956 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告