我正在使用Google图表的折线图,并将以下示例放在一起:http://codepen.io/anon/pen/epJqaX

如您所见,所有数据点都有一个日期,一个值1和一个值2。

目前,我仅对hAxis使用以下代码:

hAxis: {
  format: 'MMMM',
  ticks: dateTicks,
}


现在hAxis上的标签始终位于垂直线的中心,但是我希望它们在相应月份的中心,如下图所示:

javascript - Google图表:折线图hAxis标签居中-LMLPHP

我该怎么办?

最佳答案

第一个答案(semirturgay)方向正确,但是存在一些严重问题:


它不起作用,至少应该将其包装为ready事件
它不关心本地化。例如,当我运行OP提供的代码时,由于我位于丹麦,所以月份被翻译为“ januar”,“ februar”等。将硬编码的字符串与Google可视化本地化的格式化值进行比较是不明智的,它将失败。
它正在使用jQuery


这是一个使用Google可视化自己的格式方法的有效解决方案,如果需要更改date的格式(只需将DateFormat({pattern: 'MMMM'})更改为hAxis的任何值:format),也可以轻松更改。 :

google.visualization.events.addListener(chart, 'ready', function() {
   var indent = 120,
       texts = document.querySelectorAll('text'),
       formatter = new google.visualization.DateFormat({pattern: 'MMMM'});

   function indentText(month) {
       for (var t=0;t<texts.length;t++) {
          if (texts[t].textContent == month) {
             texts[t].setAttribute('x', parseInt(texts[t].getAttribute('x'))+indent);
             return;
          }
       }
   }
   for (var i=0;i<dateTicks.length;i++) {
       indentText(formatter.formatValue(dateTicks[i]));
   }
})


已将代码笔代码移至小提琴-> http://jsfiddle.net/no4ztpuc/

关于javascript - Google图表:折线图hAxis标签居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32610427/

10-11 15:18