如何在 Google Charts 轴中仅显示特定值?

Kin*_*Kin 5 javascript charts google-visualization

所以我有一个有很多日期的图表。是否有可能以某种方式仅显示某些标题。例如第一个、最后一个以及它们之间的每 5 个?

图表

Whi*_*Hat 3

您可以使用ticks 配置选项来设置自定义轴标签

要使用数据中的值,请使用getValue带有DataTable
getValue两个参数的方法,row&column

行和列从零开始,每个行和列的第一个是0
data.getValue(0, 0)

要获取第一列中的最后一个值,请使用getNumberOfRows() - 1
data.getValue(data.getNumberOfRows() - 1, 0)

要获取每五个元素,请使用模运算符%
请记住,这将包括第一个元素,
也可能包括最后一个元素,具体取决于行数...

// add every fifth
var tickMarks = [];
for (var i = 0; i < data.getNumberOfRows(); i++) {
  if (i % 5 === 0) {
    tickMarks.push(data.getValue(i, 0));
  }
}
Run Code Online (Sandbox Code Playgroud)

请参阅以下工作片段,它仅添加第一个和最后一个......

// add every fifth
var tickMarks = [];
for (var i = 0; i < data.getNumberOfRows(); i++) {
  if (i % 5 === 0) {
    tickMarks.push(data.getValue(i, 0));
  }
}
Run Code Online (Sandbox Code Playgroud)
google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', 'Units');
    data.addRows([
      [new Date(2016,0,1), 100],
      [new Date(2016,0,3), 120],
      [new Date(2016,0,30), 110],
      [new Date(2016,1,1), 170],
      [new Date(2016,1,10), 180],
      [new Date(2016,1,25), 110],
      [new Date(2016,2,1), 170],
      [new Date(2016,2,14), 171],
      [new Date(2016,2,20), 172],
      [new Date(2016,3,12), 173],
      [new Date(2016,3,16), 174],
      [new Date(2016,3,19), 175],
      [new Date(2016,4,12), 176],
      [new Date(2016,4,16), 177],
      [new Date(2016,4,19), 178],
      [new Date(2016,5,12), 179],
      [new Date(2016,5,16), 180],
      [new Date(2016,5,19), 181],
      [new Date(2016,6,12), 190],
      [new Date(2016,6,16), 192],
      [new Date(2016,6,19), 196],
      [new Date(2016,6,24), 192],
      [new Date(2016,7,12), 190],
      [new Date(2016,7,16), 192],
      [new Date(2016,7,19), 196]
    ]);

    var tickMarks = [];

    //add first
    tickMarks.push(data.getValue(0, 0));

    //add last
    tickMarks.push(data.getValue(data.getNumberOfRows() - 1, 0));

    var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
    chart.draw(data, {
      hAxis: {
        format: 'M/d/yy',
        ticks: tickMarks
      }
    });
  },
  packages: ['corechart']
});
Run Code Online (Sandbox Code Playgroud)