google.charts.load('current', {
callback: function() {
window.addEventListener('resize', drawChart, false);
drawChart();
},
packages: ['corechart']
});
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Year', 'Y1', 'Y2'],
['2010', 10, 14],
['2020', 14, 22],
['2030', 16, 24],
['2040', 22, 30],
['2050', 28, 36]
]);
var seriesColors = ['#00ffff', '#ff00ff'];
var rgbaMap = {
'#00ffff': 'rgba(0,255,0,0.5)',
'#ff00ff': 'rgba(255,0,0,0.5)'
};
var options = {
colors: seriesColors,
};
var chartDiv = document.getElementById('chart_div');
var chart = new google.visualization.ColumnChart(chartDiv);
// modify svg
var observer = new MutationObserver(function() {
Array.prototype.forEach.call(chartDiv.getElementsByTagName('rect'), function(rect) {
if (seriesColors.indexOf(rect.getAttribute('fill')) > -1) {
rect.setAttribute('fill', rgbaMap[rect.getAttribute('fill')]);
}
});
});
observer.observe(chartDiv, {
childList: true,
subtree: true
});
chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
当然,一旦图表完成绘制,您可以更改构成图表的svg元素的样式 - 但是,图表会将样式重置为原始样式,任何时候都存在交互性,例如悬停/选择 - 这就是为什么以下示例使用MutationObserver来了解活动何时发生 - 请参阅[本示例](http://stackoverflow.com/a/40476688/5090771),它会更改标签的样式在'Sankey'图上... – WhiteHat
我该如何去关注条形图中的列节点? – rzb