【问题标题】:How to draw Google Charts of type stacked columns如何绘制堆积柱类型的谷歌图表
【发布时间】:2018-11-23 08:50:00
【问题描述】:

我有这个表结构:

Name Grade       Count
X    VeryGood      10
X    Excellent      2
X    Failed         0
Y    VeryGood       7
Y    Excellent      1
Y    Failed         2

我想在类似这样的堆叠 goole 图表中显示这些数据:

水平:计数

纵向:名称

有什么想法可以实现吗? P.S:我使用的是ajax数据源。

【问题讨论】:

    标签: google-visualization


    【解决方案1】:

    要绘制有问题的图表,数据表的结构需要如下,
    每个年级都有系列/列。

    ['Name', 'VeryGood', 'Excellent', 'Failed'],
    ['X', 10, 2, 0],
    ['Y', 7, 1, 2],
    

    但这将很难构建,
    无需对查询中的列值进行硬编码。

    相反,我们可以使用 google 的 DataViewgroup 方法。

    请参阅以下工作 sn-p...

    google.charts.load('current', {
      packages: ['corechart']
    }).then(function () {
      var data = google.visualization.arrayToDataTable([
        ['Name', 'Grade', 'Count'],
        ['X', 'VeryGood', 10],
        ['X', 'Excellent', 2],
        ['X', 'Failed', 0],
        ['Y', 'VeryGood', 7],
        ['Y', 'Excellent', 1],
        ['Y', 'Failed', 2],
      ]);
    
      var aggColumns = [];
      var viewColumns = [0];
    
      var distinctLabels = data.getDistinctValues(1);
      distinctLabels.forEach(function (label, index) {
        viewColumns.push({
          calc: function (dt, row) {
            if (dt.getValue(row, 1) === label) {
              return dt.getValue(row, 2);
            }
            return null;
          },
          type: 'number',
          label: label
        });
        aggColumns.push({
          column: index + 1,
          aggregation: google.visualization.data.sum,
          type: 'number'
        });
      });
    
      var view = new google.visualization.DataView(data);
      view.setColumns(viewColumns);
    
      var groupData = google.visualization.data.group(
        view,
        [0],
        aggColumns
      );
    
      var chart = new google.visualization.BarChart(document.getElementById('chart'));
      chart.draw(groupData, {
        isStacked: true
      });
    });
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多