当前位置:首页>python>Python Matplotlib绘制带标签的条形图-5

Python Matplotlib绘制带标签的条形图-5

  • 2026-09-11 18:53:22
Python Matplotlib绘制带标签的条形图-5
  • 本示例展示如何使用 bar_label助手功能来创建条形图标签。

  • 使用可调用对象设置条形图标签

  • 绘制了一个垂直条形图,展示三种动物的奔跑速度(单位:英里/小时),并在每个条形顶部添加了自定义标签,将速度值实时转换为公里/小时(保留一位小数)显示。
  • 通过 fmt 参数传入一个函数,可以在标签中动态计算并格式化内容,适用于需要转换单位、添加自定义文字或进行复杂运算的场景。

源代码:

import matplotlib.pyplot as pltanimal_names = ['Lion', 'Gazelle', 'Cheetah']mph_speed = [50, 60, 75]fig, ax = plt.subplots()bar_container = ax.bar(animal_names, mph_speed)ax.set(ylabel='speed in MPH', title='Running speeds', ylim=(0, 80))ax.bar_label(bar_container, fmt=lambda x: f'{x * 1.61:.1f} km/h')plt.show()

源代码详解:

# 1. 导入库并设置随机种子import matplotlib.pyplot as plt# 2. 定义数据animal_names = ['Lion', 'Gazelle', 'Cheetah']   # 动物名称列表,将作为 x 轴的刻度标签。mph_speed = [50, 60, 75]    # 对应的奔跑速度(单位:英里/小时,mph),分别为 50、60、75。# 3. 创建图形和坐标轴fig, ax = plt.subplots()# 4. 绘制条形图bar_container = ax.bar(animal_names, mph_speed)# x.bar() 绘制垂直条形图:# 第一个参数 animal_names 为 x 轴上的类别(位置)。# 第二个参数 mph_speed 为条形的高度(即速度值)。# 返回值 bar_container 是一个 BarContainer 对象,包含了所有绘制的条形,用于后续添加标签# 5. 设置坐标轴标签、标题和 y 轴范围ax.set(ylabel='speed in MPH', title='Running speeds', ylim=(0, 80))# ax.set() 一次性设置多个属性:# ylabel='speed in MPH':y 轴标签为“speed in MPH”(速度,单位英里/小时)。# title='Running speeds':图表标题为“Running speeds”(奔跑速度)。# ylim=(0, 80):y 轴显示范围从 0 到 80,确保所有条形(最高 75)完整显示,并留出顶部空间给数值标签。# 6. 在条形顶部添加自定义数值标签ax.bar_label(bar_container, fmt=lambda x: f'{x * 1.61:.1f} km/h')# ax.bar_label() 是 matplotlib 3.4.0 引入的方法,用于在条形上添加标签。# 第一个参数 bar_container:指定要添加标签的条形容器。# fmt 参数:可以是字符串格式(如 '%.2f')或可调用对象。这里传入一个 lambda 函数:lambda x: f'{x * 1.61:.1f} km/h'。# x 是条形的高度值(即原始速度值,单位为 mph)。# x * 1.61 将英里/小时转换为公里/小时(1 英里 ≈ 1.61 公里)。# {:.1f} 将转换后的数值保留一位小数。# 最终返回字符串,例如 50 * 1.61 = 80.5,显示为 80.5 km/h。# 因此,标签显示的不是原始 mph 值,而是转换后的 km/h 值,并附带单位“km/h”。标签默认放置在条形顶部(垂直条形图的正上方)。# 7. 显示图形plt.show()

最新文章

随机文章