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

如何在Matplotlib中为折线图(lineplot)应用summer颜色映射?

解决Matplotlib折线图使用summer颜色映射的问题

问题根源

plt.scatter()支持通过cmap参数直接调用颜色映射,因为它可以为每个散点分配独立颜色;但plt.plot()的color参数只接受单一颜色值(比如十六进制、RGB元组、颜色名称),不能直接传入颜色映射名称,这就是报错的核心原因。

解决方案

从summer颜色映射中提取对应每个Cycle_Index的颜色值,再给每条折线指定该颜色:

  1. 获取summer颜色映射实例
    先创建颜色映射对象,再根据循环索引的数量生成对应的颜色数组:

    import matplotlib.pyplot as plt
    import numpy as np
    from matplotlib.cm import get_cmap
    
    # 获取summer颜色映射
    cmap = get_cmap('summer')
    # 获取所有唯一的Cycle_Index
    cycle_indices = np.unique(data['Cycle_Index'])
    # 根据循环索引数量生成颜色数组,将索引归一化到0-1范围以匹配色映射区间
    colors = cmap(np.linspace(0, 1, len(cycle_indices)))
    
  2. 遍历Cycle_Index绘制折线
    循环每个索引,匹配对应的颜色绘制折线:

    plt.figure(figsize=(10,6))
    for idx, cycle in enumerate(cycle_indices):
        # 筛选当前循环的数据
        cycle_data = data[data['Cycle_Index'] == cycle]
        # 绘制折线,指定从colors数组中取对应颜色
        plt.plot(cycle_data['x_axis'], cycle_data['y_axis'], color=colors[idx], label=f'Cycle {cycle}')
    
    plt.xlabel('X轴标签')
    plt.ylabel('Y轴标签')
    plt.title('电池循环数据折线图')
    plt.legend()
    plt.show()
    

自定义LinearSegmentedColormap的适配

如果使用自定义的颜色映射,只需把get_cmap('summer')换成你的自定义cmap对象即可,逻辑完全一致:

# 示例自定义summer风格的颜色映射
from matplotlib.colors import LinearSegmentedColormap
custom_summer = LinearSegmentedColormap.from_list('custom_summer', ['#ffffcc', '#8dd3c7', '#fb8072'])
colors = custom_summer(np.linspace(0, 1, len(cycle_indices)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:06