google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var data0 = google.visualization.arrayToDataTable([
['Name', 'Popularity 0'],
['Cesar', 250],
['Rachel', 4200],
['Patrick', 2900],
['Eric', 8200]
]);
var data1 = google.visualization.arrayToDataTable([
['Name', 'Popularity 1'],
['', 370],
['', 600],
['', 700],
['', 1500]
]);
var data2 = google.visualization.arrayToDataTable([
['Name', 'Popularity 2'],
['', 1370],
['', 1600],
['', 1700],
['', 500]
]);
var data3 = google.visualization.arrayToDataTable([
['Name', 'Popularity 3'],
['', 1070],
['', 1200],
['', 1000],
['', 900]
]);
var chartColors = ['#f44336', '#9c27b0', '#2196f3', '#4caf50'];
var options0 = {
backgroundColor: 'transparent',
colors: [chartColors[0]],
height: 400,
legend: {
position: 'top',
alignment: 'center'
},
vAxis: {
viewWindow: {
min: 0,
max: 10000
}
},
width: 600
};
var options1 = {
backgroundColor: 'transparent',
bar: {
groupWidth: 40
},
colors: [chartColors[1]],
height: 400,
legend: {
position: 'top',
alignment: 'center'
},
vAxis: {
ticks: [{v: 0, f: ''}],
viewWindow: {
min: 0,
max: 10000
}
},
width: 600
};
var options2 = {
backgroundColor: 'transparent',
bar: {
groupWidth: 20
},
colors: [chartColors[2]],
height: 400,
legend: {
position: 'top',
alignment: 'center'
},
vAxis: {
ticks: [{v: 0, f: ''}],
viewWindow: {
min: 0,
max: 10000
}
},
width: 600
};
var options3 = {
backgroundColor: 'transparent',
bar: {
groupWidth: 10
},
colors: [chartColors[3]],
height: 400,
legend: {
position: 'top',
alignment: 'center'
},
vAxis: {
ticks: [{v: 0, f: ''}],
viewWindow: {
min: 0,
max: 10000
}
},
width: 600
};
var colChart0 = new google.visualization.ColumnChart(document.getElementById('chart_div_0'));
var colChart1 = new google.visualization.ColumnChart(document.getElementById('chart_div_1'));
var colChart2 = new google.visualization.ColumnChart(document.getElementById('chart_div_2'));
var colChart3 = new google.visualization.ColumnChart(document.getElementById('chart_div_3'));
google.visualization.events.addListener(colChart0, 'ready', function () {
adjustLegend(colChart0);
});
google.visualization.events.addListener(colChart1, 'ready', function () {
adjustLegend(colChart1);
});
google.visualization.events.addListener(colChart2, 'ready', function () {
adjustLegend(colChart2);
});
google.visualization.events.addListener(colChart3, 'ready', function () {
adjustLegend(colChart3);
});
colChart0.draw(data0, options0);
colChart1.draw(data1, options1);
colChart2.draw(data2, options2);
colChart3.draw(data3, options3);
function adjustLegend(chart, index) {
var chartContainer;
var chartId;
var chartLabels;
var chartLayout = chart.getChartLayoutInterface();
var chartBounds = chartLayout.getChartAreaBoundingBox();
var labelBounds = chartLayout.getBoundingBox('legendentry#0');
var legendMarkers;
var offsetX;
var offsetY;
switch (chart) {
case colChart0:
chartId = 'chart_div_0';
offsetX = labelBounds.width * -1;
offsetY = labelBounds.height * -1;
break;
case colChart1:
chartId = 'chart_div_1';
offsetX = labelBounds.width;
offsetY = labelBounds.height * -1;
break;
case colChart2:
chartId = 'chart_div_2';
offsetX = labelBounds.width * -1;
offsetY = labelBounds.height;
break;
case colChart3:
chartId = 'chart_div_3';
offsetX = labelBounds.width;
offsetY = labelBounds.height;
break;
}
chartContainer = document.getElementById(chartId);
chartLabels = chartContainer.getElementsByTagName('text');
Array.prototype.forEach.call(chartLabels, function(label) {
if (label.getAttribute('text-anchor') === 'start') {
label.setAttribute('x', parseFloat(label.getAttribute('x')) + offsetX);
label.setAttribute('y', parseFloat(label.getAttribute('y')) + offsetY);
}
});
legendMarkers = chartContainer.getElementsByTagName('rect');
Array.prototype.forEach.call(legendMarkers, function(rect) {
if ((chartColors.indexOf(rect.getAttribute('fill')) > -1) && (parseFloat(rect.getAttribute('y')) < chartBounds.top)) {
rect.setAttribute('x', parseFloat(rect.getAttribute('x')) + offsetX);
rect.setAttribute('y', parseFloat(rect.getAttribute('y')) + offsetY);
//console.log(chartId, rect);
}
});
}
});
.chart {
position: absolute;
left: 0px;
top: 0px;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div class="chart" id="chart_div_0"></div>
<div class="chart" id="chart_div_1"></div>
<div class="chart" id="chart_div_2"></div>
<div class="chart" id="chart_div_3"></div>