javascript - 如何为 highcharts 生成动态系列数据?
问题描述
我在我的项目中使用 angular-highcharts。我使用https://www.highcharts.com/demo/column-basic这个图表作为我的数据。我有以下数据格式。
[
{
"project": "train project1",
"hours": {
"AD": 58265
}
},
{
"project": "butify",
"hours": {
"AD": 3940
}
},
{
"project": "skler",
"hours": {
"AD": 563250
}
},
{
"project": "Internal Application",
"hours": {
"AD": 33325,
"DAM": 328095
}
},
{
"project": "train2project",
"hours": {
"AD": 137215
}
},
{
"project": "CELLProje1",
"hours": {
"DAM": 488470
}
},
{
"project": "rangeselector",
"hours": {
"AD": 3015,
"DAM": 71175
}
},
{
"project": "Android dev",
"hours": {
"AD": 99160
}
},
{
"project": "Web Application",
"hours": {
"AD": 72720
}
}
];
“小时”内的值将是一个或多个。到目前为止,我已经添加了我的小提琴。我努力为系列数据形成 json 。此外,对于应该在数组中的图形,我需要形成 X 轴。前任:
categories: [
'train project1',
'beautify',
'skler',
'Internal Application',
'train project2',
'rangeselector',
'Android',
'Web Application'
],
X轴编队会不会吧?
解决方案
这是我的想法,无论data.hours
对象中有多少属性,如何解析您的数据以在 Highcharts 库中使用。
演示:http: //jsfiddle.net/BlackLabel/31tp0mkw/
const categories = sampleJson.map(data => data.project);
const getSeriesNames = sampleJson.map(data => {
for (let i in data.hours) {
return i
}
}).filter((item, i, ar) => ar.indexOf(item) === i);
const series = getSeriesNames.map(name => {
let output = {
name: name,
data: []
};
sampleJson.forEach(data => {
if (data.hours[name]) {
output.data.push(data.hours[name])
} else {
output.data.push(null)
}
});
return output
})
推荐阅读
- java - 为 println 语句分配一个值,以便它可以在文件中的任何位置使用
- angular - 有没有办法在 Angular 中将复杂对象的回调函数从父视图传递到子视图?
- vb.net - VB.net 调用 API Query 返回 503 但我可以在任何浏览器中查询为什么
- php - 如何将数组转换为对象?
- google-analytics - 来自 pinterest 的流量未显示在谷歌分析中
- javascript - gooddata 如何获取要呈现的可视化的标识符
- javascript - TypeScript - 迭代枚举时的奇怪行为
- python - 使用哪个模块来控制键盘?
- windows - 使所有名称为“abc”的子文件夹及其内容可写 - Windows
- node.js - 从 S3 传输电影时,文件不可搜索