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

循环设置Matplotlib子图标题异常:仅显示最后元素问题排查

解决Matplotlib子图标题循环赋值错误的问题

你的代码问题出在循环逻辑错误:外层循环p时,每次都会通过列表推导式重新设置所有4个子图的标题,最终所有子图的标题都会被最后一次循环(p=3)的值覆盖,导致所有标题都用了name和freq的最后一个元素。

修正方案

我们需要让每个子图对应唯一的name、freq值,同时根据子图的列索引匹配supplier(A对应第0列,B对应第1列)。可以通过遍历子图的行列索引,计算对应的p值来实现:

import matplotlib.pyplot as plt

name = [['1'], ['2'], ['3'],['4']]
freq = ['51', '52', '53','54']
supplier = ['A', 'B']

fig1, axs = plt.subplots(2,2)
# 遍历每个子图的行l和列k
for l in range(2):
    for k in range(2):
        # 计算当前子图对应的p索引:行号*2 + 列号
        p = l * 2 + k
        # 设置标题,列k对应supplier[k]
        axs[l, k].set_title(f'曲线:{name[p][0]}\n供应商:{supplier[k]} @ {freq[p]}')
plt.tight_layout() # 自动调整标题和子图间距,避免重叠
plt.show()

说明

  1. 用l和k遍历每个子图的位置,通过p = l*2 +k将2x2的子图位置映射为0-3的索引,对应name和freq的顺序;
  2. 子图的列索引k直接对应supplier的元素(第0列用A,第1列用B);
  3. 添加plt.tight_layout()可以避免标题和子图内容重叠,优化显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:39:27