首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表中的多数据集线图

表中的多数据集线图
EN

Stack Overflow用户
提问于 2019-05-08 16:09:16
回答 1查看 107关注 0票数 0

我试图创建一个多集线图使用图表js和角度。使用map,我可以将json数据简化为一维数组,但我需要将列(头)转换为标签,平均列为y轴,时间戳列转换为x轴。

来自DB的json格式o/p示例

代码语言:javascript
复制
var dataset = 
[{id:1, head:test1,timestamp:5/6/2019,average:12},]
{id:2, head:test1,timestamp:6/6/2019,average:15},
{id:3, head:test2,timestamp:5/6/2019,average:7},
{id:4, head:test2,timestamp:6/6/2019,average:20},
{id:5, head:test3,timestamp:6/6/2019,average:13}]

用于多y轴输出的图表的预期格式

代码语言:javascript
复制
 {data : [12, 15], label:test1},
 {data : [7, 20], label:test2},
 {data : [0, 13], label:test3},

我只能将每个列数据转换为一维数组,但由于我正在将整个数据集转换为一维数组,如果我试图从其中直接得到一个图形,就有可能出现数据不匹配的情况。

代码语言:javascript
复制
var labels = dataset.map(function(obj) {return obj.head});
var tstamp = dataset.map(function(obj) {return obj.timestamp});
var tavg = dataset.map(function(obj) {return obj.average});

请让我知道你的建议,如何将数据转换为预期的格式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-08 16:23:28

首先必须通过索引结果来减少对象:

代码语言:javascript
复制
const data = dataset.reduce((accu, item) => {
  if (accu[item.head] == null) accu[item.head] = { data: [], label: item.head };
  accu[item.head].data.push(item.average);
  return accu;
}, {});

然后从结果中提取值。

代码语言:javascript
复制
const result = Object.values(data);

在此之后,您可以填充结果.data字段以获得正确的一致性。

代码语言:javascript
复制
result.forEach(line => {
  while (line.data.length < 2) 
    line.data.unshift(0);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56044886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档