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

如何为Python多设备数据集折线图添加到期天数渐变配色

解决方案

要实现用渐变颜色映射设备到期天数的折线图,你可以利用Matplotlib的颜色映射(colormap)和归一化工具,将到期天数数值映射到对应的颜色区间。以下是修改后的完整代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.colors import Normalize

# 设备到期天数数据
device_expiry_days = np.array([101, 220, 1000, 43, 592, 603, 599, 499, 299, 100])

# 设置颜色映射的范围:50天为灰色,1000天及以上为红色
norm = Normalize(vmin=50, vmax=1000)
# 选择从浅灰到深红的渐变映射,匹配天数越高颜色越深的需求
cmap = plt.cm.Reds

# 创建画布
fig, ax = plt.subplots(figsize=(10, 6))

# 循环绘制每个设备的折线
for idx, expiry_days in enumerate(device_expiry_days):
    # 生成模拟数据
    random_data = np.random.randint(10, 25, size=5)
    df = pd.DataFrame(random_data, columns=['Capacity'])
    
    # 根据到期天数获取对应颜色,处理超出范围的数值
    color = cmap(norm(max(min(expiry_days, 1000), 50)))
    
    # 绘制折线并添加标签
    ax.plot(df['Capacity'], color=color, label=f"设备{idx+1} | 剩余{expiry_days}天")

# 添加颜色条,解释颜色与到期天数的对应关系
sm = plt.cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])
fig.colorbar(sm, ax=ax, label='设备到期剩余天数')

# 设置图表基础元素
ax.set_title('各设备容量趋势(颜色对应到期剩余天数)')
ax.set_xlabel('时间节点')
ax.set_ylabel('容量')
# 图例放置在画布外侧,避免遮挡折线
ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')

plt.tight_layout()
plt.show()

关键说明:

  • 归一化(Normalize):将到期天数限制在50-1000的区间内,确保颜色映射的范围完全匹配你的需求,超出区间的数值会被强制映射到端点颜色。
  • 颜色映射(cmap):选用plt.cm.Reds实现从浅灰(低天数)到深红(高天数)的渐变,你也可以替换为plt.cm.plasma_r等其他映射调整风格。
  • 颜色条(colorbar):直观展示颜色与天数的对应关系,让观看者快速理解折线颜色的含义。
  • 边界处理:通过max(min(expiry_days, 1000), 50)确保无论实际天数低于50还是高于1000,都能对应到你预设的端点颜色。

如果需要自定义渐变的具体颜色(比如指定特定灰色和红色),可以用以下代码创建自定义映射:

from matplotlib.colors import LinearSegmentedColormap

# 自定义从深灰到正红的渐变
custom_cmap = LinearSegmentedColormap.from_list('custom_gray_red', ['#666666', '#FF0000'])
# 替换代码中原有cmap即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:15:36