You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化matplotlib柱状图生成函数 从传入列表自动提取x/y轴数据

函数优化实现方案

你只需要把原函数内硬编码的x、y列表替换为从duck_list参数动态提取的内容即可,修改逻辑如下:

  • 用列表推导式遍历duck_list,提取所有name字段作为x轴数据
  • 用列表推导式遍历duck_list,提取所有weight字段作为y轴数据
  • 额外补充原函数未使用的filename参数逻辑,支持将生成的图表保存到本地

优化后的完整代码如下:

import matplotlib.pyplot as plt
import numpy as np
import math
%matplotlib inline

duck_list_1 = [
               {'name': 'Jerome', 'weight': 3.38, 'wingspan': 49.96, 'length': 19.75},
               {'name': 'Ibraheem', 'weight': 3.08, 'wingspan': 50.59, 'length': 20.6},
               {'name': 'Tiana', 'weight': 0.81, 'wingspan': 47.86, 'length': 17.94},
               {'name': 'Lucas', 'weight': 3.33, 'wingspan': 48.27, 'length': 18.77},
               {'name': 'Rickie', 'weight': 4.4, 'wingspan': 51.0, 'length': 20.34}
                ]

# 优化后的Task 3b函数
def show_ducks_weights(duck_list, filename):
    # 动态提取x、y数据,不再硬编码
    x = [duck['name'] for duck in duck_list]
    y = [duck['weight'] for duck in duck_list]
    fig1b, ax = plt.subplots(figsize=(12, 8), dpi=90)
    ax.bar(x, y, color='b')
    ax.set_title("Duck Weight Comparison")
    ax.set_xlabel("Duck Name")
    ax.set_ylabel("Weight (kg)")
    # 使用传入的filename参数保存图片
    plt.savefig(filename)
    plt.show()

# 调用测试
show_ducks_weights(duck_list_1, 'duck_weight_comparison.png')

修改后函数完全不依赖固定的鸭子列表,只要传入的duck_list每个元素包含name和weight字段,就能正常生成对应柱状图,可适配任意数量、任意名字的鸭子数据。

内容的提问来源于stack exchange,提问作者Polina99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:36:02