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

如何使用Ant Design Charts实现带95%置信区间填充的多折线面积图

Ant Design Charts 折线图实现置信区间填充方案

你当前使用的单Line组件默认配置无法直接实现跨系列的置信区间面积填充,可根据场景选择以下两种方案实现:


方案一:数据转宽表+组合图实现(推荐,性能更高)

适合数据量较大的场景,渲染效率更高,配置逻辑更清晰。

步骤1:长表转宽表

将你当前按category拆分的长表结构,转换为每个日期对应一条数据的宽表结构:

const processedData = Object.values(
  data.reduce((acc, cur) => {
    if (!acc[cur.date]) acc[cur.date] = { date: cur.date };
    acc[cur.date][cur.category] = cur.value;
    return acc;
  }, {})
);

步骤2:组合图渲染

通过Chart容器同时加载置信区间填充层和三条折线:

import { Chart, Line, Area } from '@ant-design/charts';

const Graph = () => {
  const processedData = Object.values(
    data.reduce((acc, cur) => {
      if (!acc[cur.date]) acc[cur.date] = { date: cur.date };
      acc[cur.date][cur.category] = cur.value;
      return acc;
    }, {})
  );

  const config = {
    data: processedData,
    xField: 'date',
  };

  return (
    <Chart {...config}>
      {/* 置信区间填充层 */}
      <Area 
        yField="upper_95" 
        y1Field="lower_95" 
        style={{ fill: '#165DFF', fillOpacity: 0.15 }}
      />
      {/* 95%置信区间上下限折线 */}
      <Line yField="upper_95" color="#aaa" size={1} />
      <Line yField="lower_95" color="#aaa" size={1} />
      {/* 预测值折线 */}
      <Line yField="prediction" color="#165DFF" size={2} />
    </Chart>
  );
};

可自行调整填充色、透明度、折线颜色粗细等样式参数适配你的设计需求。


方案二:不修改数据结构,单Line组件配置实现(适合小数据量)

如果不想调整原有数据结构,可直接在现有Line组件配置中新增填充逻辑:

const Graph = () => {
    const config = {
         data,
         xField: "date",
         yField: "value",
         seriesField: "category",
         // 开启面积填充
         isArea: true,
         // 仅对上限系列开启可见填充
         areaStyle: (datum) => {
           if (datum.category === 'upper_95') {
             return { fill: '#165DFF', fillOpacity: 0.15 };
           }
           return { fill: 'transparent' };
         },
         // 动态获取同日期下限作为面积填充基线
         getY1: (datum) => {
           if (datum.category === 'upper_95') {
             const lowerItem = data.find(item => item.date === datum.date && item.category === 'lower_95');
             return lowerItem ? lowerItem.value : 0;
           }
           return 0;
         },
         // 区分三条折线样式
         series: [
           { type: 'upper_95', color: '#aaa', lineSize: 1 },
           { type: 'lower_95', color: '#aaa', lineSize: 1 },
           { type: 'prediction', color: '#165DFF', lineSize: 2 },
         ]
    };
    
    return <Line {...config} />
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03