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

嵌套for循环绘图问题:期望生成3个不同颜色的独立图表

问题分析与修正

原代码的核心问题:

  • 函数quanta定义在嵌套循环内,冗余且无意义
  • 逐点绘制而非一次性生成整条曲线,效率低且无法形成连续线条
  • 未区分不同温度对应的曲线颜色,也未创建独立图表

修正方案1:同一画布内绘制3条不同颜色的曲线

利用numpy向量化计算,避免嵌套循环,一次性生成每条曲线的所有点,再分别绘制并设置颜色:

import matplotlib.pyplot as plt
import numpy as np

Temp = np.array([6, 7, 8])
Freq = np.arange(1, 10, 0.1)

# 定义计算函数(放在循环外)
def quanta(f, T):
    return f * T

# 遍历每个温度,生成并绘制对应曲线
colors = ['red', 'green', 'blue']  # 指定每条曲线的颜色
for idx, T in enumerate(Temp):
    final = quanta(Freq, T)  # 直接传入整个Freq数组,得到整条曲线的y值
    plt.plot(Freq, final, color=colors[idx], label=f'T={T}')

plt.xlabel('Frequency')
plt.ylabel('Quanta')
plt.legend()  # 显示图例区分不同曲线
plt.show()

修正方案2:生成3个独立的窗口图表

如果需要每个温度对应一个单独的图表窗口,每次循环创建新的画布:

import matplotlib.pyplot as plt
import numpy as np

Temp = np.array([6, 7, 8])
Freq = np.arange(1, 10, 0.1)

def quanta(f, T):
    return f * T

colors = ['red', 'green', 'blue']
for idx, T in enumerate(Temp):
    plt.figure()  # 每次循环创建新的画布
    final = quanta(Freq, T)
    plt.plot(Freq, final, color=colors[idx])
    plt.title(f'T={T}')
    plt.xlabel('Frequency')
    plt.ylabel('Quanta')

plt.show()

关键改进点

  • 将函数定义移出循环,避免重复定义
  • 利用numpy的向量化特性,直接对整个数组计算,无需逐点循环
  • 通过指定color参数区分不同曲线,或用plt.figure()创建独立图表
  • 添加标签、标题、图例,提升图表可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:20:34