Javascript examples for highcharts:Line Chart
series labels overlapping in line chart
<html> <head> <title>Highcharts Demo</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> $(function () {/* w ww . j av a 2s .c o m*/ $('#container').highcharts({ chart: { events: { load: function () { StaggerDataLabels(this.series); }, redraw: function () { var series = this.series; setTimeout(function () { StaggerDataLabels(series); }, 1000); } } }, xAxis: { categories: ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'] }, plotOptions: { series: { dataLabels: { enabled: true, borderRadius: 5, backgroundColor: 'rgba(252, 255, 197, 0.7)', borderWidth: 1, borderColor: '#AAA', y: -6 } } }, series: [{ data: [10, 20, 30, 25, 15, 5] }, { data: [11, 22, 33, 20, 10, 0] }] }); }); function StaggerDataLabels(series) { sc = series.length; if (sc < 2) return; for (s = 1; s < sc; s++) { var s1 = series[s - 1].points, s2 = series[s].points, l = s1.length, diff, h; for (i = 0; i < l; i++) { if (s1[i].dataLabel && s2[i].dataLabel) { diff = s1[i].dataLabel.y - s2[i].dataLabel.y; h = s1[i].dataLabel.height + 2; if (isLabelOnLabel(s1[i].dataLabel, s2[i].dataLabel)) { if (diff < 0) s1[i].dataLabel.translate(s1[i].dataLabel.translateX, s1[i].dataLabel.translateY - (h + diff)); else s2[i].dataLabel.translate(s2[i].dataLabel.translateX, s2[i].dataLabel.translateY - (h - diff)); } } } } } function isLabelOnLabel(a, b) { var al = a.x - (a.width / 2); var ar = a.x + (a.width / 2); var bl = b.x - (b.width / 2); var br = b.x + (b.width / 2); var at = a.y; var ab = a.y + a.height; var bt = b.y; var bb = b.y + b.height; if (bl > ar || br < al) { return false; } //overlap not possible if (bt > ab || bb < at) { return false; } //overlap not possible if (bl > al && bl < ar) { return true; } if (br > al && br < ar) { return true; } if (bt > at && bt < ab) { return true; } if (bb > at && bb < ab) { return true; } return false; } </script> </head> <body> <script src="https://code.highcharts.com/highcharts.js"></script> <div id="container" style="height: 300px; width: 500px"></div> </body> </html>