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

如何为多传感器绘图循环调用不同Colormap及绘图方式优化咨询

问题解决方案

一、实现循环调用不同Colormap并展示温度范围

针对你的需求,修改代码逻辑,让每个传感器对应列表中的指定Colormap,同时通过颜色条直观展示温度与颜色的对应关系,修改后的代码如下:

import matplotlib.pyplot as plt
import numpy as np

# 假设sensor_number、Temp、t、R、param、model_funct已提前定义
cmap_list = ['Blues', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds']

for j, n in enumerate(sensor_number):
    fig, ax = plt.subplots(figsize=[10,6])
    # 获取当前传感器对应的Colormap
    current_cmap = plt.cm.get_cmap(cmap_list[j])
    # 将温度范围归一化到Colormap的0-1区间
    temp_norm = plt.Normalize(min(Temp), max(Temp))
    # 生成每个温度对应的颜色
    temp_colors = current_cmap(temp_norm(Temp))
    
    for k, (T, color) in enumerate(zip(Temp, temp_colors)):
        xs = np.linspace(t[0], t[-1], 1000)
        ys = model_funct(xs, *param[k][j])
        # 绘制对应温度的拟合线
        ax.plot(xs, ys, linestyle='dashed', color=color, alpha=0.7)
        # 绘制对应温度的实验散点
        ax.scatter(t, R[k], s=0.5, color=color, label=f"Temp: {T}")
    
    # 添加颜色条,关联温度与当前Colormap
    color_bar = plt.cm.ScalarMappable(cmap=current_cmap, norm=temp_norm)
    color_bar.set_array([])
    fig.colorbar(color_bar, ax=ax, label='Temperature')
    
    ax.set_title(f"Sensor {n} - Temperature vs Measurement")
    ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
    plt.tight_layout()
    # plt.savefig(f"{dir}\\Graphs\\{n}_hj.png")
    plt.show()

关键改动说明:

  • 通过plt.cm.get_cmap(cmap_list[j])循环调用列表中对应传感器的Colormap
  • 用Normalize将温度范围映射到Colormap的标准区间,确保颜色与温度严格对应
  • 添加颜色条(colorbar),直接展示当前传感器的温度范围与颜色的对应关系
  • 修正原代码中重复绘制散点的逻辑,让每个温度对应一组独立的拟合线和散点

二、等高线图是否适合该场景?

分两种情况判断:

  • 如果你的数据是二维空间分布类数据(比如传感器在不同空间位置,每个位置对应温度和测量值),等高线图(或填充等高线contourf)非常适合,能清晰展现温度、测量值在空间上的分布规律。
  • 如果你的数据是时间序列类数据(t是时间,R是不同温度下的时间序列测量值),当前的散点+拟合线方式更直观,能清晰看到单温度下测量值随时间的变化趋势,以及模型拟合效果。这种场景下等高线图不适用,因为缺少二维空间维度支撑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:33:34