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

如何基于月份为Matplotlib多线图按日期配色?

按月份从色图为Matplotlib曲线配色的简便方法

核心思路

不用循环迭代器硬选色,而是先把每条曲线对应的月份值归一化,直接从Matplotlib色图中映射出对应颜色,实现按月份而非绘图顺序配色。

实现步骤及代码

1. 数据预处理(用Pandas简化操作)

先把数据读入,解析日期,按日期分组(每条曲线对应同一天的数据),同时提取每条曲线对应的月份:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.colors import Normalize

# 读入数据(假设数据存为data.csv,也可直接用字符串读取)
data = pd.read_csv('data.csv', sep='\s+', parse_dates=['DATE (YYYY-MM-DDTHH:MI:SSZ)'])
data.rename(columns={'DATE (YYYY-MM-DDTHH:MI:SSZ)': 'date'}, inplace=True)

# 按日期分组,获取每条曲线的数据
groups = data.groupby(data['date'].dt.date)
# 提取每条曲线对应的月份(如11月、12月)
months = [date.month for date, _ in groups]

2. 建立月份到颜色的映射

把月份值归一化到[0,1]区间,然后用选定的色图生成对应颜色:

# 归一化月份值到0-1区间
norm = Normalize(vmin=min(months), vmax=max(months))
# 选择色图(可替换为plasma、coolwarm等内置色图)
cmap = cm.get_cmap('viridis')
# 生成每条曲线对应的颜色
colors = [cmap(norm(month)) for month in months]

3. 绘图并应用颜色

遍历分组数据,用对应颜色绘制A-B曲线:

plt.figure(figsize=(10,6))
# 同时遍历分组数据和对应颜色
for (date, group), color in zip(groups, colors):
    plt.plot(group['A'], group['B'], label=f'{date}', color=color)

plt.xlabel('变量A')
plt.ylabel('变量B')
plt.title('按月份配色的A-B曲线')
plt.legend(title='日期')
# 可选:添加颜色条,直观展示月份与颜色的对应关系
sm = cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])
plt.colorbar(sm, label='月份')

plt.show()

关键说明

  • 若数据跨年份,可把月份替换为date.to_period('M')(如2019-11、2020-01),再转换为数值进行归一化
  • 色图可根据需求自由替换,直接使用Matplotlib内置色图名称即可
  • 颜色条能帮助观察者快速对应颜色与月份的关系,建议添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:10:55