Charts 谷歌图表,柱形图-如何在x轴标签上使柱居中?

Charts 谷歌图表,柱形图-如何在x轴标签上使柱居中?,charts,google-visualization,Charts,Google Visualization,在两组的分组柱状图中,当另一列的高度为0时,我希望将该列居中 那么比如说, 2013年至2016年的条形图应以年份标签为中心。这是因为组中的第二个值为0,因此栏的高度为0,因此不显示任何栏: data = [ ["2012", 900, 950], ["2013", 1000, 0], ["2014", 1170, 0], ["2015", 1250, 0], ["2016", 1530, 0] ]; 如何使用谷歌图表实现这一点?请参

在两组的分组柱状图中,当另一列的高度为0时,我希望将该列居中

那么比如说,

2013年至2016年的条形图应以年份标签为中心。这是因为组中的第二个值为0,因此栏的高度为0,因此不显示任何栏:

  data = [
     ["2012", 900, 950],
     ["2013", 1000, 0],
     ["2014", 1170, 0],
     ["2015", 1250, 0],
     ["2016", 1530, 0]
  ];

如何使用谷歌图表实现这一点?

请参阅以下工作片段

这些条在对应的空白处居中。
但是,一旦用户将鼠标悬停在一个条上,它就会中断

条形图由
元素表示,
用于绘制图表本身、网格线、图例栏等。
3
元素用于突出显示悬停的条

这是什么打破了下面的代码,它抛出了例行程序,以找到酒吧

下面是它现在的工作原理

将有与行和系列相同数量的条/
元素,
即使一个条不可见。
它们将是元素列表中的倒数第二个元素。
最后一个
元素是x轴

下面的代码向后运行,跳过最后一个元素
并统计行数/系列数,以收集可能需要移动的条

当用户悬停时,将插入3个元素,因此例程需要更改以适应。
为了正确地突出显示,还需要移动它们

否则,您只需关闭互动,即可完成

enableInteractivity: false
google.charts.load('current'{
软件包:['corechart']
}).然后(函数(){
var data=google.visualization.arrayToDataTable([
[“年”、“亚洲”、“妈妈”],
["2012", 900, 950],
["2013", 1000, 0],
["2014", 1170, 0],
["2015", 1250, 0],
["2016", 1530, 0]
]);
变量选项={
图表区:{
高度:“100%”,
宽度:“100%”,
前32名,
左:48,
右:128,
底数:48
},
身高:400,
宽度:“100%”
};
var container=document.getElementById('chart');
var chart=新的google.visualization.ColumnChart(容器);
google.visualization.events.addListener(图表'ready',函数(){
//获取图表布局
var chartLayout=chart.getChartLayoutInterface();
//创建变异观察者
var observer=新的MutationObserver(函数(){
//获取条元素
var rects=container.getElementsByTagName('rect');
var barLength=data.getNumberOfRows()*(data.getNumberOfColumns()-1);
var条=[];
对于(var i=rects.length-1;i>((rects.length-1)-(barLength+1));i-){
如果(i<(矩形长度-1)){
不移位(矩形[i]);
}
}
//处理每行
对于(var r=0;r


没有现成的选项,您需要在图表的
'ready'
事件中手动移动条形(
)元素…@WhiteHat谢谢。我是否需要使用D3.js手动移动rect元素?您可以使用常规javascript,但这并不容易。移动条形图后,如果有人悬停、单击等,图表会将其移回。您必须关闭交互或使用
MutationObserver
来了解图表是否将其移回。此外,很难确定哪些
元素代表条形图,与图例、图表区、网格线等中的条形图相比,这将是一场考验,但这是可能的。我可以让你开始,如果你真的想。。。