Trying to remove column with zero value from highcharts.
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0,
}
},
series: [{
name: 'Tokyo',
data: [49.9, 0, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
}, {
name: 'New York',
data: [83.6, 78.8, null, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]
}, {
name: 'London',
data: [48.9, 38.8, 39.3, 0, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]
}, {
name: 'Berlin',
data: [42.4, 33.2, 34.5, 39.7, 0, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]
}]
here is demo
http://jsfiddle.net/pirelly/oa1g9rvu/
Thanks,
Vitaliy
You can make custom function responsible for positioning your columns:
var justifyColumns = function(chart) {
var categoriesWidth = chart.plotSizeX / (1 + chart.xAxis[0].max - chart.xAxis[0].min),
distanceBetweenColumns = 0,
each = Highcharts.each,
sum, categories = chart.xAxis[0].categories,
number;
for (var i = 0; i < categories.length; i++) {
sum = 0;
each(chart.series, function(p, k) {
if (p.visible) {
each(p.data, function(ob, j) {
if (ob.category == categories[i]) {
sum++;
}
});
}
});
distanceBetweenColumns = categoriesWidth / (sum + 1);
number = 1;
each(chart.series, function(p, k) {
if (p.visible) {
each(p.data, function(ob, j) {
if (ob.category == categories[i]) {
ob.graphic.element.x.baseVal.value = i * categoriesWidth + distanceBetweenColumns * number - ob.pointWidth / 2;
number++;
}
});
}
});
}
};
You can use you chart parameters like chart.plotSizeX for calculating distance between your columns.
Here you can find live example:
http://jsfiddle.net/7o0eq05L/8/
You can also use wrapper of getColumnMetrics function
Here you can find information about extending Highcharts:
http://www.highcharts.com/docs/extending-highcharts/extending-highcharts
And here you can find live example of chart:
http://jsfiddle.net/hgjvpqab/
Kind regards.