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

plt.scatter绘图中色条异常归一化问题求助

解决Matplotlib散点图色条异常归一化到0-1的问题

核心排查与修复步骤:

  • 确认c参数绑定正确数据
    确保plt.scatter的c参数直接传入原始差值列(比如cumulative_diff_df['direct_indirect_diff']),而非经过0-1归一化处理后的数据。如果之前误对数据做了归一化,直接替换为原始差值数据。

  • 在scatter中直接指定vmin和vmax
    先计算差值数据的实际范围,然后在绘制散点图时直接传入这两个值,避免后续色条设置冲突:

    # 计算差值的实际极值
    diff_min = cumulative_diff_df['差值列名'].min()
    diff_max = cumulative_diff_df['差值列名'].max()
    
    # 绘制散点图,绑定数据与范围
    scatter = plt.scatter(
        x=cumulative_diff_df['x坐标列'], 
        y=cumulative_diff_df['y坐标列'],
        c=cumulative_diff_df['差值列名'],
        vmin=diff_min,
        vmax=diff_max,
        cmap='viridis'  # 可替换为你需要的颜色映射
    )
    
    # 基于散点图对象生成色条
    plt.colorbar(scatter)
    
  • 避免重复设置色条范围
    不要同时使用scatter的vmin/vmax和cbar.set_clim,二者选其一即可。优先用前者,因为它直接与散点图的数据绑定,不会出现覆盖问题。

  • 子图场景下的正确处理
    若绘制两个子图,需为每个子图的散点图单独设置对应的数据范围,确保色条与子图数据匹配:

    import matplotlib.pyplot as plt
    
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6))
    
    # 第一个子图:直接辐照度差值
    diff_min1 = cumulative_diff_df['direct_diff'].min()
    diff_max1 = cumulative_diff_df['direct_diff'].max()
    sc1 = ax1.scatter(
        x=cumulative_diff_df['x'], y=cumulative_diff_df['y'],
        c=cumulative_diff_df['direct_diff'],
        vmin=diff_min1, vmax=diff_max1, cmap='coolwarm'
    )
    ax1.set_title('直接辐照度差值')
    fig.colorbar(sc1, ax=ax1)
    
    # 第二个子图:间接辐照度差值
    diff_min2 = cumulative_diff_df['indirect_diff'].min()
    diff_max2 = cumulative_diff_df['indirect_diff'].max()
    sc2 = ax2.scatter(
        x=cumulative_diff_df['x'], y=cumulative_diff_df['y'],
        c=cumulative_diff_df['indirect_diff'],
        vmin=diff_min2, vmax=diff_max2, cmap='coolwarm'
    )
    ax2.set_title('间接辐照度差值')
    fig.colorbar(sc2, ax=ax2)
    
    plt.tight_layout()
    plt.show()
    
  • 排查是否误用归一化函数
    检查代码中是否存在matplotlib.colors.Normalize或手动归一化(比如(data - min)/(max - min))的逻辑,若有则删除,直接使用原始差值数据传入c参数。

内容的提问来源于stack exchange,提问作者boléro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:35:16