2012-11-29 68 views
5

不确定这是否可能。在我的例子中,我使用json作为源,但这可以是任何大小。在我的fiddle示例中,我将通过绑定两列ProductFamily(xAxis)和Value(yAxis)以共享方式使用此数据,但我希望能够使用聚合对列进行分组。Kendo UI BarChart数据分组

在这个没有分组的例子中,它显示了FamilyA的多个列。 无论数据量如何,这可以分组为一列吗?

因此,结果将显示值为4850 + 4860 = 9710等的FamilyA的一列。

网上所有例子的一个问题是,每个类别总是有正确数量的数据。不确定这是否有意义?

http://jsfiddle.net/jqIndy/ZPUr4/3/

//Sample data (see fiddle for complete sample) 
[{ 
     "Client":"", 
     "Date":"2011-06-01", 
     "ProductNumber":"5K190", 
     "ProductName":"CABLE USB", 
     "ProductFamily":"FamilyC", 
     "Status":"OPEN", 
     "Units":5000, 
     "Value":5150.0, 
     "ShippedToDestination":"CHINA" 
}] 


var productDataSource = new kendo.data.DataSource({ 
    data: dr, 
    //group: { 
    // field: "ProductFamily", 
    //}, 
    sort: { 
    field: "ProductFamily", 
    dir: "asc" 
    }, 
    //aggregate: [ 
    //  { field: "Value", aggregate: "sum" } 
    //], 
    //schema: { 
    // model: { 
    // fields: { 
    //  ProductFamily: { type: "string" }, 
    //  Value: { type: "number" }, 
    // } 
    // } 
    //} 
      }) 

$("#product-family-chart").kendoChart({ 
     dataSource: productDataSource, 
     //autoBind: false, 
     title: { 
      text: "Product Family (past 12 months)" 
     }, 
     seriesDefaults: { 
      overlay: { 
      gradient: "none" 
      }, 
      markers: { 
      visible: false 
      }, 
      majorTickSize: 0, 
      opacity: .8 
     }, 
     series: [{ 
      type: "column", 
      field: "Value" 
     }], 
     valueAxis: { 
      line: { 
      visible: false 
      }, 
      labels: { 
      format: "${0}", 
      skip: 2, 
      step: 2, 
      color: "#727f8e" 
      } 
     }, 
     categoryAxis: { 
      field: "ProductFamily" 
     }, 
     legend: { 
      visible: false 
     }, 
     tooltip: { 
      visible: true, 
      format: "Value: ${0:N0}" 
     } 
     });​ 
+0

我正在尝试创建一个将包含不少图的仪表板,为了给出最终响应,我认为最好创建一个包含所有数据的大json文件,但似乎这种方法是不可能的。然后这个文件可以在所有图形之间共享,但是因为每个图形的结构是如此不同,我将不得不为每个图形创建一个json文件。 – jqIndy

+0

这可能会帮助你http://jsfiddle.net/v8tsQ/42/ – SimonGates

+0

这个问题是,如果你在同一季度在同一家公司的json中有另一个项目,这将显示为一个额外的栏图表。我怎样才能把这个总数加到现有的2011Q2中,这样它仍然只显示1列,共1 + 145 = 146? { “CompanyId”:201, “组名”: “星座”, “SectionName”: “CCLF”, “FindingQuarter”: “2011Q2”, “DataElement”: “合计”, “DataValue” :“”, “Total”:145 }, – jqIndy

回答

2

剑道UI图表不支持绑定到组聚集体。至少还没有。

我的建议是:

  1. 移动总定义,所以它的每个组计算:

    group: { 
        field: "ProductFamily", 
        aggregates: [ { 
         field: "Value", 
         aggregate: "sum" 
        }] 
    } 
    
  2. 提取的变化处理的聚合值:

    var view = products.view(); 
    var families = $.map(view, function(v) { 
        return v.value; 
    }); 
    var values = $.map(view, function(v) { 
        return v.aggregates.Value.sum; 
    }); 
    
  3. 手动绑定组和类别:

    series: [ { 
        type: "column", 
        data: values 
    }], 
    categoryAxis: { 
        categories: families 
    } 
    

工作演示可以在这里找到:http://jsbin.com/ofuduy/5/edit

我希望这有助于。

+0

这太棒了。非常感谢! – jqIndy