5

これが可能かどうかわからない。私の例では、ソースとしてjsonを使用していますが、これは任意のサイズにすることができます。フィドルの例では、ProductFamily(xAxis)とValue(yAxis)の2つの列をバインドするだけでこのデータを共有して使用しますが、集計を使用して列をグループ化できるようにしたいと思います。

グループ化されていないこの例では、FamilyAの複数の列が表示されます。これを1つの列にグループ化し、データの量に関係なく値を集計できますか?

したがって、結果には、値4850 + 4860=9710などのFamilyAの1つの列が表示されます。

オンラインのすべての例の問題は、各カテゴリに常に正しい量のデータがあることです。これが理にかなっているかどうかわかりませんか?

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}"
        }
      });​
4

1 に答える 1

2

Kendo 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

これがお役に立てば幸いです。

于 2012-12-06T08:27:54.403 に答える