google 图表 vAxis 标签的自定义格式

Custom format for google chart vAxis label

我有一个面积图,在 vAxis 上我希望标签显示 # 小时。对于下面的数据,“总花费时间”列是总分钟数的整数。我希望 vAxis 标签显示为 # hrs。因此,例如,第一行将显示 31.3 小时。我没有找到为此创建自定义格式化程序的方法,我可以在其中将分钟转换为十进制小时并附加“hrs”后缀。有任何想法吗?谢谢

var data = google.visualization.arrayToDataTable([
    ['Date', 'Deals Processed', 'Total Time Spent'],
    [ '12/17/2020', 4, 1878], 
    [ '12/18/2020', 3, 290], 
    [ '12/21/2020', 8, 2772], 
    [ '12/22/2020', 6, 1084], 
    [ '12/23/2020', 4, 1175]
]);

我们可以通过提供自己的 ticks.
来自定义 y 轴标签 对于每个刻度,我们可以使用对象表示法,并提供值 (v:) 和格式化值 (f:)

{v: 1878, f: '31.3 hrs'}

我们也可以使用相同的方法自定义悬停点时的工具提示,
在数据 table.

['12/17/2020', 4, {v: 1878, f: '31.3 hrs'}],

或者我们可以在创建数据table后设置格式化值。

data.setFormattedValue(0, 2, (1878 / 60).toFixed(1) + ' hrs');

要构建报价,我们可以使用数据 table 方法 --> getColumnRange(columnIndex)
这将 return 一个具有 min & max
属性的对象 我们可以用它来构建我们的 ticks 数组。

  // build y-axis labels
  var range = data.getColumnRange(2);
  var max = Math.ceil(range.max / 100) * 100;
  var ticks = [];
  for (var i = 0; i <= max + 600; i = i + 600) {
    ticks.push({
      v: i,
      f: (i / 60).toFixed(0) + ' hrs'
    });
  }

请参阅以下工作片段...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = google.visualization.arrayToDataTable([
    ['Date', 'Deals Processed', 'Total Time Spent'],
    [ '12/17/2020', 4, 1878],
    [ '12/18/2020', 3, 290],
    [ '12/21/2020', 8, 2772],
    [ '12/22/2020', 6, 1084],
    [ '12/23/2020', 4, 1175]
  ]);
  
  // format tooltip
  for (var i = 0; i < data.getNumberOfRows(); i++) {
    var minutes = data.getValue(i, 2);
    data.setFormattedValue(i, 2, (minutes / 60).toFixed(1) + ' hrs');
  }

  // build y-axis labels
  var range = data.getColumnRange(2);
  var max = Math.ceil(range.max / 100) * 100;
  var ticks = [];
  for (var i = 0; i <= max + 600; i = i + 600) {
    ticks.push({
      v: i,
      f: (i / 60).toFixed(0) + ' hrs'
    });
  }

  var options = {
    height: 400,
    vAxis: {
      ticks: ticks
    }
  };
  
  var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>