1. 怎么让Highcharts的提示框tooltip自动轮播?
个人Highcharts
的颜值感觉比ECharts
高那么一点点,比如3D饼图
、3D环形图
就很酷炫,ECharts
就没有或者说做出来效果很一般。
但是,如果是公司的项目的话,先问问你们老板愿不愿意花钱购买授权,Highcharts
对于个人网站,学校网站和非盈利机构免费,其他都是要收费的。之前做公司的项目,UI设计了个酷炫的3D饼图
,用Highcharts
做完才发现是收费的。。。
如果是个人网站或者公司购买了授权,那可以放心使用。那怎么让tooltip
自动轮播呢?可以利用tooltip.refresh
方法、给chart.events
加上load
事件来实现。
2. 代码怎么写呢?
我们直接上代码:
<div id="container" style="height: 400px"></div> <script src="https://code.highcharts.com.cn/highcharts/highcharts.js"></script> <script src="https://code.highcharts.com.cn/highcharts/highcharts-3d.js"></script> <script type="text/javascript"> var timer = null; var chart = Highcharts.chart('container', { chart: { type: 'pie', options3d: { enabled: true, alpha: 45, beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; var i = 0; timer && clearInterval(timer); timer = setInterval(function () { autoTooltip(points[i]); i++; if (i === len) { i = 0; } }, 1000); } } }, title: { text: null }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', depth: 35, dataLabels: { enabled: true, format: '{point.name}' } } }, series: [{ type: 'pie', name: '浏览器占比', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ] }] }); function autoTooltip(point) { chart.tooltip.refresh(point); } </script> <script src="https://code.highcharts.com.cn/highcharts/highcharts.js"></script> <script src="https://code.highcharts.com.cn/highcharts/highcharts-3d.js"></script> <script type="text/javascript"> var timer = null; var chart = Highcharts.chart('container', { chart: { type: 'pie', options3d: { enabled: true, alpha: 45, beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; var i = 0; timer && clearInterval(timer); timer = setInterval(function () { autoTooltip(points[i]); i++; if (i === len) { i = 0; } }, 1000); } } }, title: { text: null }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', depth: 35, dataLabels: { enabled: true, format: '{point.name}' } } }, series: [{ type: 'pie', name: '浏览器占比', data: [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ] }] }); function autoTooltip(point) { chart.tooltip.refresh(point); } </script>
tooltip.refresh(points, e)
是在论坛里面看到有人提到源码里面有这个方法,但是官方文档里面并没有提到,不知道是出于什么样的考虑。
3. 示例代码下载
可以复制以上代码运行查看使用效果,也可以到GitHub:
https://github.com/Jackyyans/code123
下载,更多示例将会持续更新,欢迎关注。