首页 > 解决方案 > 如何在谷歌图表中绘制月份与文本标签图

问题描述

如何在 h 轴上创建月-年(2018 年 3 月)并在 V 轴上创建标签(数据库模块)的谷歌图表

[
    ['Database Module', new Date(2018, 3, 30),1],
    ['HR Module', new Date(2018, 1, 4), 1],
    ['Finance Module', new Date(2018, 2, 4),4],
    ['Operations Module', new Date(2018, 2, 4), 6],
    ['PP Module', new Date(2018, 2, 4), 1]
]

标签: graphchartsgoogle-visualization

解决方案


不确定这是否是您要查找的图表,
但您可以使用 aDataView为每个标签创建一个 v 轴列,
然后使用该group()方法按日期求和...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Database Module', new Date(2018, 3, 30),1],
    ['HR Module', new Date(2018, 1, 4), 1],
    ['Finance Module', new Date(2018, 2, 4),4],
    ['Operations Module', new Date(2018, 2, 4), 6],
    ['PP Module', new Date(2018, 2, 4), 1]
  ], true);

  var dataView = new google.visualization.DataView(data);
  var labels = data.getDistinctValues(0);
  var viewColumns = [1];
  labels.forEach(function (label, index) {
    viewColumns.push({
      calc: function (dt, row) {
        if (dt.getValue(row, 0) === label) {
          return dt.getValue(row, 2);
        }
        return null;
      },
      label: label,
      type: 'number'
    });
  });
  dataView.setColumns(viewColumns);

  var aggColumns = [];
  labels.forEach(function (label, index) {
    aggColumns.push({
      aggregation: google.visualization.data.sum,
      column: index + 1,
      label: dataView.getColumnLabel(index + 1),
      type: dataView.getColumnType(index + 1)
    });
  });

  var dataGroup = google.visualization.data.group(dataView, [0], aggColumns);

  var chartDiv = document.getElementById('chart_div');
  var chart = new google.visualization.ColumnChart(chartDiv);
  chart.draw(dataGroup, {
    legend: 'bottom'
  });
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>


推荐阅读