Skip to content Skip to sidebar Skip to footer

Summarize Categories By Year In Google Column Chart

I have a data table with number of car sales in the last 3 years. I want to create a column chart that has columns for 'leased', 'financed', and 'cash sale' in each year. My table

Solution 1:

first, build a DataView with columns for each sale type

then use the group method to aggregate the view

see following working snippet...

google.charts.load('current', {
  callback: drawChart,
  packages:['corechart']
});

functiondrawChart() {
  var data = google.visualization.arrayToDataTable([
    ['Sale Date', 'Sale Type'],
    [newDate(2016, 0, 16), 'cash sale'],
    [newDate(2016, 0, 16), 'cash sale'],
    [newDate(2016, 0, 16), 'leased'],
    [newDate(2016, 0, 16), 'leased'],
    [newDate(2016, 0, 16), 'financed'],
    [newDate(2017, 0, 16), 'cash sale'],
    [newDate(2017, 0, 16), 'cash sale'],
    [newDate(2017, 0, 16), 'cash sale'],
    [newDate(2017, 0, 16), 'financed'],
    [newDate(2016, 0, 17), 'cash sale'],
    [newDate(2016, 0, 17), 'financed'],
    [newDate(2016, 0, 17), 'cash sale'],
    [newDate(2016, 0, 17), 'leased'],
    [newDate(2016, 0, 17), 'financed'],
    [newDate(2017, 0, 17), 'financed'],
    [newDate(2017, 0, 17), 'financed'],
    [newDate(2017, 0, 17), 'cash sale'],
    [newDate(2017, 0, 17), 'financed'],
    [newDate(2016, 0, 18), 'leased'],
    [newDate(2016, 0, 18), 'cash sale'],
    [newDate(2017, 0, 18), 'cash sale'],
    [newDate(2017, 0, 18), 'cash sale']
  ]);

  // build view and aggregation columnsvar viewColumns = [{
    label: 'year',
    type: 'string',
    calc: function (dt, row) {
      return dt.getValue(row, 0).getFullYear().toString();
    }
  }];
  var aggColumns = [];
  var saleTypes = data.getDistinctValues(1);
  saleTypes.forEach(function (saleType) {
    var colIndex = viewColumns.push({
      label: saleType,
      type: 'number',
      calc: function (dt, row) {
        return (dt.getValue(row, 1) === saleType) ? 1 : 0;
      }
    });
    aggColumns.push({
      aggregation: google.visualization.data.sum,
      column: colIndex - 1,
      label: saleType,
      type: 'number'
    });
  });

  var view = new google.visualization.DataView(data);
  view.setColumns(viewColumns);

  var summary = google.visualization.data.group(
    view,
    [0],
    aggColumns
  );

  var container = document.body.appendChild(document.createElement('div'));
  var chart = new google.visualization.ColumnChart(container);
  chart.draw(summary, {
    legend: {
      position: 'top'
    }
  });
}
<scriptsrc="https://www.gstatic.com/charts/loader.js"></script>

Post a Comment for "Summarize Categories By Year In Google Column Chart"