Home › Forums › Chart Support › indexLabel overlapping in case of small column width width › Reply To: indexLabel overlapping in case of small column width width
@himanshu-singhal,
You can avoid overlapping of indexlabels by skipping alternate labels based on chart width. Repeating the same thing on rangeChanged event will avoid overlapping of indexlabels upon zoom / pan. Please find the code-snippet for the same below.
function skipIndexLabel() { var axisXMin = chart.axisX[0].viewportMinimum; var axisXMax = chart.axisX[0].viewportMaximum; var noDps = noOfDataPointWithinViewport(axisXMin, axisXMax); var chartBounds = chart.get("bounds"); var widthOfChart = chartBounds.x2 - chartBounds.x1; var widthOfColumn = widthOfChart / noDps; if(widthOfColumn > 60) skipIndexLabelMod = 1; else if(widthOfColumn > 40) skipIndexLabelMod = 2; else if(widthOfColumn > 30) skipIndexLabelMod = 3; else if(widthOfColumn > 20) skipIndexLabelMod = 4; else if(widthOfColumn > 10) skipIndexLabelMod = 5; else skipIndexLabelMod = 6; for(var i=0; i<chart.options.data[3].dataPoints.length; i++) { if(i%skipIndexLabelMod === 0) { chart.options.data[3].dataPoints[i].indexLabel = "#total"; } else { chart.options.data[3].dataPoints[i].indexLabel = ""; } } chart.render(); }
Please take a look at this JSFiddle for working code.
P.S.: You can even reduce the font-size of indexlabels by seting indexLabelFontSize property to smaller value along with the above mentioned solution to improve it further.
—– Manoj Mohan Team CanvasJS