2

特定のチャートではこのようなグループ化を達成できましたが、他のチャートでは達成できませんでした。たとえば、次のようなデータソースがあるとします。

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);
}

これは、シリーズごとに 1 つの valueField のみが機能する限り機能します。ブレット チャートの場合、または棒/縦棒グラフのプロットバンドにフィールドを割り当てたい場合: 割り当てられません。

グループ化されていない JSON オブジェクトをグループ化された剣道データソースに変換するだけで十分なはずなので、何か完全に間違っているに違いないと思います。以下は私のJSFiddleです..

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

どんな助けでも大歓迎です!ありがとう!

4

0 に答える 0