本示例展示如何使用 bar_label助手功能来创建条形图标签。- 创建垂直条形图,显示三种口味的冰淇淋(gelato)销量,并在条形顶部添加格式化标签(数字带千位分隔符)。
import matplotlib.pyplot as pltimport numpy as npfruit_names = ['Coffee', 'Salted Carmel', 'Pistachio']fruit_counts = [4000, 2000, 7000]fig, ax = plt.subplots()bar_container = ax.bar(fruit_names, fruit_counts)ax.set(ylabel='pints sold', title='Gelato sales by flavor', ylim=(0, 8000))ax.bar_label(bar_container, fmt='{:,.0f}')plt.show()
# 1. 导入库并设置随机种子import matplotlib.pyplot as pltimport numpy as np# 2. 定义数据fruit_names = ['Coffee', 'Salted Caramel', 'Pistachio'] # 一个列表,包含三种冰淇淋口味的名称(咖啡、海盐焦糖、开心果),这些将作为 x 轴的刻度标签。fruit_counts = [4000, 2000, 7000] # 对应的销量(单位:品脱,pints),分别为 4000、2000 和 7000。# 3. 创建图形和坐标轴fig, ax = plt.subplots()# 4. 绘制条形图bar_container = ax.bar(fruit_names, fruit_counts)# ax.bar() 绘制垂直条形图。# 第一个参数 fruit_names:x 轴上的类别(位置)。# 第二个参数 fruit_counts:每个条形的高度(数值)。# 返回值 bar_container 是一个 BarContainer 对象,包含了所有绘制的条形,后续用于添加数值标签。# 5. 设置坐标轴标签、标题和 y 轴范围ax.set(ylabel='pints sold', title='Gelato sales by flavor', ylim=(0, 8000))# ax.set() 是一个便捷方法,一次性设置多个属性:# ylabel='pints sold':y 轴标签为“pints sold”(品脱销量)。# title='Gelato sales by flavor':图表标题为“Gelato sales by flavor”(按口味统计的冰淇淋销量)。# ylim=(0, 8000):y 轴显示范围从 0 到 8000,确保所有条形(最高 7000)完整显示,并留出顶部空间给数值标签。# 6. 在条形顶部添加数值标签ax.bar_label(bar_container, fmt='{:,.0f}')# ax.bar_label() 是 matplotlib 3.4.0 引入的方法,用于在条形上添加标签。# 第一个参数 bar_container:指定要添加标签的条形容器。# fmt='{:,.0f}':标签的格式化字符串。这里使用 Python 的格式说明符:# :,.0f 表示数字以逗号作为千位分隔符,不保留小数(整数形式)。# 例如 4000 会显示为 "4,000",2000 显示为 "2,000",7000 显示为 "7,000"。# 默认情况下,标签会显示在每个条形的顶部(垂直条形图的正上方)。# 7. 显示图形plt.show()
