【问题标题】:Kendo Stacked Column Chart grouping error剑道堆积柱形图分组错误
【发布时间】:2016-03-09 12:45:39
【问题描述】:

我有这样的数据

这是我的 Json 数据格式

[{  "Value1":"B95 ",
"Value2":1.2600,
"ChartType":"column",
"ChartDescription":"Fuel Sales Quantity",
"Value3":"2015-07-27",
"SeriesField":"Value2",
"CategoryField":"Value3",
"IsGroup":true,
"IsStacked":true,
"GroupValue":"Value1",
"SortValue":"Value3"},

{"Value1":"B93",
"Value2":8.2100,
"ChartType":"column",
"ChartDescription":"Fuel Sales Quantity",
"Value3":"2015-07-22",
"SeriesField":"Value2",
"CategoryField":"Value3",
"IsGroup":true,
"IsStacked":true,
"GroupValue":"Value1",
"SortValue":"Value3"}]

我只想用剑道柱形图每天创建一个分组堆叠图表 但是当我绘制这张图表时,我有 6 个独特的日子,但图表只显示 4 天 这里的图表示例...

数据相互混合或移动...

这是我的 Javascript 代码

function createChart(number) {
$("#chart-" + number).kendoChart({
    dataSource: myData,
    title: {
        text: title
    },
    legend: {
        visible: true,
        position: "bottom",
        labels: {
            template: '#: chartType == "pie" ? dataItem.Value1 : chartType == "donut" ? dataItem.Value1 : text #'
        }
    },
    seriesDefaults: {
        type: chartType,
        stack: stackValue
    },
    series: series,
    valueAxis: {
        labels: {
            format: "{0}"
        }
    },
    categoryAxis: categories,
    tooltip: {
        visible: true,
        format: "{0}",
        template: "#= dataItem.Value1 #: #= kendo.format('{0:N}',value)  #"
    }
});

}

$(document).ready(function () {
    $.ajax({
        url: '../Dashboards/QuerySelected',
        data: { id: number, from: fromdate, to: todate, fleet: fleetident },
        success: function (data) {
            if (data.length != 0) {
                    if (data[0].IsGroup) {
                        myData = {
                            data: data,
                            group:{
                                field: data[0].GroupValue
                            },
                            sort: {
                                field: data[0].SortValue,
                                dir: "asc"
                            }
                        }

                    }
                    else {
                        myData = data
                    }

                    series = [{
                        field: data[0].SeriesField
                    }];

                    categories = {
                        field: data[0].CategoryField
                    }
                    stackValue = data[0].IsStacked;
                    chartType = data[0].ChartType;
                    title = data[0].ChartDescription;

                    createChart(number);
            }
        }
    });
}

我在图表上分组或排序时可能出错吗? 我怎么解决这个问题 谢谢 扫罗

【问题讨论】:

  • 你能把每天的零值加起来吗:dojo.telerik.com/@ezanker/UsAho
  • 嗨@ezanker,我不明白我在哪里添加零值?
  • @ezanker 我正在从 sql server 获取数据。您是否有其他解决方案,因为图表将是动态的查询

标签: javascript kendo-ui kendo-chart


【解决方案1】:

您可以将 javascript 中的数据转换为如下所示:

[
    {"Category": "2015-08-10", "B93": 1.2500, "DIESEL": 1.6, "B95": 0 },
    {"Category": "2015-08-06", "B93": 0, "DIESEL": 1.68, "B95": 0 }
]

一种方法是:

  var ToolTipTemplate = "#= dataItem.Value1 #: #= kendo.format('{0:N}',value)  #";
  if (data.length != 0) {
    if (data[0].IsGroup) {
      var uniqueGroups = [];
      var transformedData = [];
      series = [];

      myData = new kendo.data.DataSource({
            data: data,
            group: {
                field: data[0].GroupValue
            },
      });
      myData.fetch(function () {
          var v = this.view();
          for (var i=0; i<v.length; i++){
            uniqueGroups.push(v[i].value)
            series.push({
              name: v[i].value,
              field: v[i].value,
              categoryField: "Category",
            });
          }                
       });

      myData = new kendo.data.DataSource({
        data: data,
        group: {
          field: data[0].SortValue
        },
        sort: {
          field: data[0].SortValue,
          dir: "asc"
        },
      });

      myData.fetch(function () {
        var v = this.view();
        for (var i=0; i<v.length; i++){
          var dataPoint = {"Category": v[i].value};
          for (var j=0; j<uniqueGroups.length; j++){
            dataPoint[uniqueGroups[j]] = 0;
          }
          for (var k=0; k<v[i].items.length; k++){
            dataPoint[v[i].items[k][v[i].items[k].GroupValue]] = v[i].items[k][v[i].items[k].SeriesField];
          }
          transformedData.push(dataPoint);            
        } 
      });

      console.log(transformedData);
      myData = transformedData;

      ToolTipTemplate = "#= series.name #: #= kendo.format('{0:N}',value)  #";          

    }
    else {
      myData = data
      series = [{
        field: data[0].SeriesField
      }];

      categories = {
        field: data[0].CategoryField
      }

    }

DEMO

【讨论】:

  • 嗨 @ezanker 我正在使用 ajax 绑定数据,但我的图表无法绘制您对此有什么建议吗?
  • 我的数据正常显示。图例和 x 轴显示真实值,但未显示系列。我尝试了刷新和重绘功能,但它不再显示数据??
  • @saulyasar,很难说没有看到你的代码。您是否正在重新创建每个 AJAX 成功的图表?还是你在设置现有图表的数据源?
  • 嗨 @ezanker 你可以从这里检查我的所有脚本我没有使用任何 html 只是使用附加 jsfiddle.net/akro3vy0
  • 我正在使用这个脚本和相同的 json 数据,但它没有显示图表??我的错在哪里?我为这个@ezanker吃了3天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多