KendoUI - DataViz - 在图表中分组和聚合JSON数据源

时间:2013-10-18 21:08:37

标签: javascript json charts kendo-ui kendo-dataviz

我已经能够在某些图表中完成此类分组,而不是其他图表。 例如,假设我有一个看起来像这样的数据源:

var pictures = [
  { type: "JPG", len: 20, wid: 15, appr: 17.5, count: 2 },
  { type: "JPG", len: 22, wid: 17, appr: 12.5, count: 3 },
  { type: "JPG", len: 24, wid: 15, appr: 10.5, count: 1 },
  { type: "JPG", len: 22, wid: 4, appr: 17.5, count: 6 },
  { type: "PNG", len: 20, wid: 15, appr: 17.5, count: 4 },
  { type: "PNG", len: 25, wid: 7, appr: 9.5, count: 4 },
  { type: "PNG", len: 21, wid: 11, appr: 21.5, count: 1 }
];

我想按照我的类别分组,在这种情况下是“类型”,我想总结所有其他字段。

我可以使用柱形图简单地完成此操作,只需设置:

即可
series: [{aggregate: "sum",categoryField: "type"}]

但是,这不适用于项目符号或饼图,因此寻找更通用的方法。我首先在开头添加“按摩”数据:

var dataSource = new kendo.data.DataSource({
  data: pictures,
  group: {
    field: "type",
    aggregates: [
        { field: "len", aggregate: "sum" },
        { field: "wid", aggregate: "sum" }
    ]
  }
});

dataSource.read();

我不知道为什么只对这样的数据源进行分组是不够的..我必须把它扔到数组中并将每个数组分配给一个类似的系列:

var seriesA = [],
  seriesB = [],
  categories = [],
  items = dataSource.view(),
  length = items.length,
  item;

for (var i = 0; i < length; i++) {
  item = items[i];

  seriesA.push(item.aggregates.wid.sum);
  seriesB.push(item.aggregates.len.sum);
}

只要每个系列只有一个valueField就可以工作。如果是子弹图,或者我想将一个字段分配给一个条形图/柱形图:它没有。

我相信我必须做一些完全错误的事情,因为将我的未分组的JSON对象转换为分组的kendo数据源就足够了。下面是我的JSFiddle ..

http://jsfiddle.net/DxMb8/4/

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案