anychart.onDocumentReady(function () {
var data = preprocessData([
var chart = anychart.column();
chart.labels({position:'top'});
chart.column(data.mapAs({'year': 0, 'value': 2, 'sub-category': 1}));
chart.xScale().names('sub-category');
chart.xAxis().labels().rotation(90);
chart.xAxis().labels().anchor("center");
chart.xAxis().overlapMode('allow-overlap');
chart.container('container').draw();
createTwoLevelAxis(chart, data);
function preprocessData(data){
data.unshift([data[0][0]]);
data.push([data[data.length - 1][0]]);
for (var i = 2; i < data.length - 1; i++) {
var previous = data[i-1][0];
var current = data[i][0];
data.splice(i, 0, [previous], [current]);
data.splice(i, 0, [previous]);
return anychart.data.set(data);
function createTwoLevelAxis(chart, data, padding){
var iter = data.mapAs({'category': 0, 'sub-category': 1}).getIterator();
var name = iter.get('category');
var value = iter.get('sub-category');
if (name && names[names.length - 1] != names[names.length - 2]) {
ticks.push(iter.getIndex());
weights.push(value?0.5:0.2);
var customScale = anychart.scales.ordinal();
customScale.values(chart.xScale().values());
customScale.names(names);
customScale.ticks(ticks);
chart.xScale().weights(weights);
chart.xAxis(0).ticks(false);
chart.xAxis(1).ticks().length(60).position('center');
chart.xAxis(1).labels().offsetY(30);
chart.xGrid(0).scale(customScale);
chart.title('Year / Release');
chart.tooltip().titleFormat("{%year}");
chart.tooltip().format("{%sub-category}: {%value}");