I have following chart with square bars
I want it to make rounded corner bars with google charts like below pic
there are no standard configuration options to change the shape of the column
but you can modify the svg directly when the chart's 'ready'
event fires
however, the chart will revert back to the original shape, on any other event
so need to modify, anytime an event is fired
--> 'ready'
, 'select'
, 'onmouseover'
, 'onmouseout'
to change the border radius of a rect
element, use the attributes rx
and ry
to ensure we have the correct rect
elements,
custom colors
are provided to the chart
then the fill
attribute is checked, to see if it exists in colors
rect
elements with a fill
attribute of 'none'
are also included,
this will be the rect
used to highlight the column 'onmouseover'
as well as rect
elements with a stroke
attribute of '#ffffff'
,
which are used to mark the selected column
one other note, the svg appears to change any colors
to lower case,
so lower case colors
are used in the array
see following working snippet...
google.charts.load('current', {
callback: function () {
var data = google.visualization.arrayToDataTable([
['Month', '2015', '2016'],
['Jan', 10, 15],
['Feb', 12, 18],
['Mar', 14, 21],
['Apr', 16, 24]
]);
var container = document.getElementById('chart_div');
var chart = new google.visualization.ColumnChart(container);
var colors = ['#cd6155', '#5499c7'];
google.visualization.events.addListener(chart, 'ready', changeBorderRadius);
google.visualization.events.addListener(chart, 'select', changeBorderRadius);
google.visualization.events.addListener(chart, 'onmouseover', changeBorderRadius);
google.visualization.events.addListener(chart, 'onmouseout', changeBorderRadius);
function changeBorderRadius() {
chartColumns = container.getElementsByTagName('rect');
Array.prototype.forEach.call(chartColumns, function(column) {
if ((colors.indexOf(column.getAttribute('fill')) > -1) ||
(column.getAttribute('fill') === 'none') ||
(column.getAttribute('stroke') === '#ffffff')) {
column.setAttribute('rx', 20);
column.setAttribute('ry', 20);
}
});
}
chart.draw(data, {
colors: colors
});
},
packages: ['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With