特定のチャートではこのようなグループ化を達成できましたが、他のチャートでは達成できませんでした。たとえば、次のようなデータソースがあるとします。
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です..
どんな助けでも大歓迎です!ありがとう!