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

Matplotlib中使用字典列表绘制多图仅显示一个的问题排查

问题原因及解决方法

两个核心问题:

  1. 列表定义错误
    你写的list_of_dict其实是仅包含1个字典的列表,而这个字典里重复使用了data和baby_name键——Python字典的键是唯一的,后面的键值对会直接覆盖前面的,最终这个字典只剩最后一组{"data": girls, "baby_name": "Frances"},循环自然只执行一次,只画出这一条曲线。

  2. 绘图函数未复用坐标轴
    你的plot_data函数每次调用都会新建一个坐标轴对象ax,就算列表正常,每次绘图也会在新的画布上生成,无法实现叠加效果。


修正方案

第一步:修正列表结构

把多个独立的字典放进列表,每个字典对应一组绘图参数:

list_of_dict = [
    {"data": boys, "baby_name": "David"},
    {"data": girls, "baby_name": "Susan"},
    {"data": boys, "baby_name": "Colin"},
    {"data": girls, "baby_name": "Frances"}
]

第二步:修改绘图函数支持坐标轴复用

让函数可以接收一个已有的坐标轴对象,指定在该轴上绘图:

def plot_data(dataset, baby_name, ax=None):
    # 如果没有传入ax,就新建一个;否则复用传入的ax
    ax = dataset.T.sort_index().loc[:, baby_name].plot(legend=baby_name, ax=ax)
    return ax

第三步:循环叠加绘图

初始化一个空的ax,每次循环都把当前的ax传给函数,实现曲线叠加:

ax = None
for item in list_of_dict:
    ax = plot_data(item['data'], item['baby_name'], ax=ax)

这样就能得到你想要的多条曲线叠加的图表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:35:03