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

Highcharts堆叠面积图实现x轴为日期时间y轴为产品数量并处理缺失数据的方法

带缺失数据点的堆叠面积图实现方案

前置处理逻辑

  • 首先对齐x轴时间维度:将日期列转换为标准datetime类型,按所需粒度(日/周/月等)重采样,保证所有时间刻度在每个产品维度下都有对应条目,缺失的数量值统一设为NaN
  • 按需选择缺失值处理方式:如果需要在图中展示缺失段的空白缺口,直接保留NaN即可;如果需要数据平滑衔接,使用时间插值、前向填充等方式补全NaN值

代码实现(Python环境)

基于Pandas + Matplotlib实现,可直接适配你的业务数据:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 替换为你的实际数据读取逻辑
# 示例数据构造:10天的3类产品数量,含随机缺失值
date_series = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
df = pd.DataFrame({
    'product_a': [20, 25, np.nan, np.nan, 32, 38, 40, np.nan, 45, 50],
    'product_b': [15, np.nan, 18, 22, 25, np.nan, 30, 32, 35, 38],
    'product_c': [10, 12, 15, np.nan, 20, 22, np.nan, 25, 28, 30]
}, index=date_series)

# 可选:需要补全缺失值时取消下一行注释,method可替换为'ffill'(前向填充)、'linear'(线性插值)
# df = df.interpolate(method='time')

# 绘制堆叠面积图
plt.figure(figsize=(12, 6))
plt.stackplot(
    df.index,
    df['product_a'], df['product_b'], df['product_c'],
    labels=['产品A', '产品B', '产品C'],
    alpha=0.75
)

# 坐标轴格式调整
plt.xlabel('日期')
plt.ylabel('产品数量')
plt.xticks(rotation=45)
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()

异常排查说明

之前使用普通折线/面积图无法实现,通常是两个原因:

  1. 各产品的时间序列未对齐,x轴刻度不统一,导致堆叠计算逻辑错误
  2. 缺失值未做标准化处理,被默认填充为0或被直接删除,无法展示缺失状态

Matplotlib的stackplot原生支持NaN值,会自动在缺失对应时间段生成空白缺口,无需额外配置即可满足缺失数据的展示需求。如果需要明确标记有效数据点,可额外调用plt.scatter为非NaN值位置添加标记点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:54:00