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

如何将自定义JSON数据对象转换为Highcharts Angular系列数据?

解决方案

1. 按目标格式转换数据

通过Array.map遍历原始Matrix数组,快速生成符合要求的series结构:

// 假设原始JSON已解析为JavaScript对象
const rawData = {
  "Matrix": [
    {"mdate":"2002-02-09","mvalue":33.0,"mt":23,"mb":99},
    {"mdate":"2002-02-09","mvalue":34.0,"mt":23,"mb":99},
    {"mdate":"2002-03-09","mvalue":39.0,"mt":23,"mb":99},
    {"mdate":"2002-04-09","mvalue":340.0,"mt":23,"mb":99},
    {"mdate":"2002-05-09","mvalue":348.0,"mt":23,"mb":99}
  ]
};

// 生成目标格式的series数组
const series = rawData.Matrix.map((item, idx) => ({
  name: `m-${idx + 1}`,
  data: [item.mvalue, item.mt, item.mb]
}));

转换后的series完全匹配你给出的示例,每个元素对应Matrix中的一条数据。


2. 配置Highcharts显示标题与X轴分类

如果要让X轴对应data数组的三个指标,同时设置标题为Matrix,完整配置如下:

Highcharts.chart('your-container-id', {
  title: {
    text: 'Matrix'
  },
  xAxis: {
    categories: ['mvalue', 'mt', 'mb'],
    title: {
      text: '指标类型'
    }
  },
  series: series
});

3. 若需X轴显示日期(更合理的时间序列展示)

如果核心需求是把mdate作为X轴分类,建议调整series结构,按指标分组(每个指标对应一个series),更符合时间序列数据的展示逻辑:

// 按指标分组整理数据
const metrics = { mvalue: [], mt: [], mb: [] };
const dateCategories = rawData.Matrix.map(item => item.mdate);

rawData.Matrix.forEach(item => {
  metrics.mvalue.push(item.mvalue);
  metrics.mt.push(item.mt);
  metrics.mb.push(item.mb);
});

// 生成按指标分组的series
const groupedSeries = Object.entries(metrics).map(([name, data]) => ({
  name,
  data
}));

// Highcharts配置
Highcharts.chart('your-container-id', {
  title: {
    text: 'Matrix'
  },
  xAxis: {
    categories: dateCategories,
    title: {
      text: '日期'
    }
  },
  series: groupedSeries
});

这种配置下,X轴会显示所有mdate值(包含重复日期),每个series对应一个指标的趋势变化,数据展示更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:10:04