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

如何使用Plotly.js创建周/月环比等场景的图表叠加层

Plotly.js 周/月/年环比叠加图实现方案

不建议用candlestick蜡烛图做这类场景,蜡烛图的字段定义、默认交互、涨跌配色都是为金融K线场景设计的,硬改适配不仅麻烦,后续调整样式、加自定义交互的成本极高。
用基础散点折线+填充层组合的方案,还原度和灵活度都远好于硬改蜡烛图,完全可以匹配你要的同比参考图效果,实现逻辑如下:

  • 先做时间轴归一化
    把所有要对比的周期数据对齐到统一的基准横轴:周环比就把每周数据对齐到「周一到周日」的7个刻度,月环比对齐到「1日到当月月末」的日期刻度,年同比对齐到「1月到12月」的月度刻度,解决不同周期天数不一致没法直接对齐叠加的问题。
  • 分层绘制历史波动区间
    先算所有历史同期数据在每个基准刻度上的最小值、最大值、25分位、75分位值,用两层无轮廓的填充折线做背景带:
    • 最底层填充历史最小值到最大值的范围,用低透明度浅灰色
    • 中间层填充25分位到75分位的范围,用稍高透明度的深灰色
      这两层就是参考图里的灰色带状背景,用来展示历史正常波动范围。
  • 叠加折线层
    按从下到上的顺序叠折线:
    • 先画你要重点对比的基准周期线(比如上月、去年同期),用中灰色实线,透明度稍低
    • 最上层画当前周期的线,用高亮主题色,线宽调粗,作为视觉核心
  • 可选自定义效果
    如果要突出异常值,可以单独把当前周期线超出历史最大/最小值的线段改成警示色,用分段散点trace就能实现,不需要额外改源码。

核心配置代码参考:

const plotConfig = {
  data: [
    // 历史极值区间底层
    {x: baseAxis, y: histMax, type: 'scatter', line: {width: 0}, showlegend: false, hoverinfo: 'skip'},
    {x: baseAxis, y: histMin, type: 'scatter', line: {width: 0}, fill: 'tonexty', fillcolor: 'rgba(200,200,200,0.2)', showlegend: false, hoverinfo: 'skip'},
    // 历史四分位区间中层
    {x: baseAxis, y: histPct75, type: 'scatter', line: {width: 0}, showlegend: false, hoverinfo: 'skip'},
    {x: baseAxis, y: histPct25, type: 'scatter', line: {width: 0}, fill: 'tonexty', fillcolor: 'rgba(150,150,150,0.3)', name: '历史50%波动区间'},
    // 对比周期线
    {x: baseAxis, y: lastPeriodData, type: 'scatter', line: {color: 'rgba(120,120,120,0.8)', width: 2}, name: '上一周期'},
    // 当前周期高亮线
    {x: baseAxis, y: currentData, type: 'scatter', line: {color: '#2563eb', width: 3}, name: '当前周期'}
  ],
  layout: {
    hovermode: 'x unified',
    xaxis: {title: '周期内时间刻度'},
    yaxis: {title: '指标数值'}
  }
}

这个方案不需要依赖任何特殊trace类型,所有样式、交互、提示文案都可以自由调整,不会出现蜡烛图默认自带的金融场景冗余功能(比如K线范围选择器、默认涨跌红绿配色),最终视觉效果可以完全对齐参考样例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:27:17