使用amCharts显示多个值的总和

时间:2018-04-27 07:51:14

标签: amcharts

我想将多个值的总和显示为amCharts的一个图表输出。我正在使用带有JSON的dataLoader来获取数据。我知道我必须创建一个函数,但我无法理解如何从dataLoader获取数据来计算

{
    "balloonText": "[[title]] of [[valueAxis]]:[[value]]",
    "lineThickness": 3,
    "id": "sumValue",
    "title": "sum Value",
    "valueField": (function() {
        var sumValues = "calculation";
        return sumValues
    }

这种尝试可能不正确,但这就是我开始的方式

{
    "balloonText": "[[title]] of [[valueAxis]]:[[value]]",
    "lineThickness": 3,
    "id": "LoadigTime",
    "title": "Loadig Time",
    "valueField": (function() {
      var sumValues = (HomePageLoad + LoginToParametersLoad + ParametersLoad + AlarmsLoad + SwitchSideLoad + LoginToAdminLoad + AdminLoad) / 7;
      return sumValues
      })
    }

1 个答案:

答案 0 :(得分:1)

valueField不能是函数,只能是数据中字段的字符串引用。

如果图表要以数据的形式显示数据中所有这些字段的总和,只需在postProcess回调中添加逻辑,即可创建包含总和的新数据集,例如

postProcess: function(data) {
  var newData = [];
  data.forEach(function(dataItem) {
    var item = {
      YOUR_CATEGORY_FIELD: dataItem.YOUR_CATEGORY_FIELD, //replace with your category field name
      sum: 0
    }; 
    //loop through your item's keys and sum everything up, filtering out
    //your category property
    item.sum = Object.keys(dataItem).reduce(function(sum, key) {
      if (key !== "YOUR_CATEGORY_FIELD") {
        sum += dataItem[key]
      }
      return sum;
    }, 0);
    newData.push(item);
  });
  return newData;
},
// ...
graphs: [{
   valueField: "sum",
   // other props here
}]