在 Kendo UI 图表中分组和堆叠数据
Group and Stack data in Kendo UI Chart
我有一个 json 数据,例如:
arr = [{ Name: 'PAVI', value: 3}, {Name: 'Crystal', value: 2}, {Name: 'PAVI', value: 6}, {Name: 'Crystal', value: 11}]
如何在 Kendo UI 图表中堆叠名称相似的数据?这是我此刻的代码
$("#chart").kendoChart({
dataSource: {
data: data,
group: {
field: 'Name'
}
},
series: [{
name: "Total Sales",
field: "value",
stack: true
}],
categoryAxis: {
field: 'Name'
},
实际上这是我使用的真实数据的结构
{
Account:"Piscopo Cash and Carry"
AccountName:"Piscopo Cash and Carry"
Category:""
MainCategory:"Other"
TotalQty:146
TotalSales:9747.616
}
更新
我通过将组设置为 MainCategory 找到了解决方案(别以为解决方案这么简单 XD)
我不确定您所说的 "stack" 是什么意思,因为对于该数据结构,我看不出您可以如何堆叠它。但是,如果您想对具有相同名称的值求和并显示总计,则可以在图表中使用聚合选项。
操作方法如下:这将对 PAVI 和 Crystal 的值求和,并在图表中仅显示两列。
var dataSource = new kendo.data.DataSource({
data: data,
group: {
field: "Name", aggregates: [{
field: "value", aggregate: "sum"
}]
}
});
注意 group
和 aggregate
选项。
完整代码如下:
var data = [
{ Name: 'PAVI', value: 3 },
{ Name: 'Crystal', value: 2 },
{ Name: 'PAVI', value: 3 },
{ Name: 'Crystal', value: 10 }
];
var dataSource = new kendo.data.DataSource({
data: data,
group: {
field: "Name", aggregates: [{
field: "value", aggregate: "sum"
}]
}
});
dataSource.read();
$("#chart").kendoChart({
dataSource: getChartData(dataSource),
series: [{
type: "column",
field: "value",
categoryField: "Name"
}]
});
function getChartData(dataSource) {
var chartData = [];
var view = dataSource.view();
for (var idx = 0; idx < view.length; idx++) {
chartData.push({
Name: view[idx].value,
value: view[idx].aggregates.value.sum
});
}
return chartData;
}
这是一个Fiddle
希望对您有所帮助:) 如有任何疑问,请随时提出。
我有一个 json 数据,例如:
arr = [{ Name: 'PAVI', value: 3}, {Name: 'Crystal', value: 2}, {Name: 'PAVI', value: 6}, {Name: 'Crystal', value: 11}]
如何在 Kendo UI 图表中堆叠名称相似的数据?这是我此刻的代码
$("#chart").kendoChart({
dataSource: {
data: data,
group: {
field: 'Name'
}
},
series: [{
name: "Total Sales",
field: "value",
stack: true
}],
categoryAxis: {
field: 'Name'
},
实际上这是我使用的真实数据的结构
{
Account:"Piscopo Cash and Carry"
AccountName:"Piscopo Cash and Carry"
Category:""
MainCategory:"Other"
TotalQty:146
TotalSales:9747.616
}
更新
我通过将组设置为 MainCategory 找到了解决方案(别以为解决方案这么简单 XD)
我不确定您所说的 "stack" 是什么意思,因为对于该数据结构,我看不出您可以如何堆叠它。但是,如果您想对具有相同名称的值求和并显示总计,则可以在图表中使用聚合选项。
操作方法如下:这将对 PAVI 和 Crystal 的值求和,并在图表中仅显示两列。
var dataSource = new kendo.data.DataSource({
data: data,
group: {
field: "Name", aggregates: [{
field: "value", aggregate: "sum"
}]
}
});
注意 group
和 aggregate
选项。
完整代码如下:
var data = [
{ Name: 'PAVI', value: 3 },
{ Name: 'Crystal', value: 2 },
{ Name: 'PAVI', value: 3 },
{ Name: 'Crystal', value: 10 }
];
var dataSource = new kendo.data.DataSource({
data: data,
group: {
field: "Name", aggregates: [{
field: "value", aggregate: "sum"
}]
}
});
dataSource.read();
$("#chart").kendoChart({
dataSource: getChartData(dataSource),
series: [{
type: "column",
field: "value",
categoryField: "Name"
}]
});
function getChartData(dataSource) {
var chartData = [];
var view = dataSource.view();
for (var idx = 0; idx < view.length; idx++) {
chartData.push({
Name: view[idx].value,
value: view[idx].aggregates.value.sum
});
}
return chartData;
}
这是一个Fiddle
希望对您有所帮助:) 如有任何疑问,请随时提出。