使用Highcharts实现柱状图、饼状图、曲线图三图合一

jerry JQuery 2015年08月20日 收藏

在数据统计和分析业务中,有时会遇到客户需要在一个图表中将柱状图、饼状图、曲线图的都体现出来,即可以从柱状图中看出具体数据、又能从曲线图中看出变化趋势,还能从饼状图中看出各部分数据比重。Highcharts可以轻松实现三图合一的效果。

查看演示

本文以某大型水果批发商一年水果销售报表为例,使用Highcharts将传统表格中的数据,体现在图表中,集中展示水果销售情况,为商家提供直观的数据分析。

以下是某水果批发商提供的数据表格,表格数据显示三城市四种水果销售量(万吨)情况。

长春 沈阳 哈尔滨
柑橘 8.4 9.2 6.5
香蕉 9.8 7.8 9.4
苹果 11.4 10.2 13.2
梨子 15.6 16.8 18.6

首先,我们在combo.html中引入jquery库和highcharts图表类:

  1. <script type="text/javascript" src="js/jquery.js"></script>
  2. <script type="text/javascript" src="js/highcharts.js"></script>
  3. <script type="text/javascript" src="js/modules/exporting.js"></script>

关于highcharts图表类的说明请查看本站helloweba.com前面的文章介绍:Highcharts-功能强大的图表库的应用,本文假设您已经对highcharts有所了解,加入您对highcharts还一无所知,请移步本站前面的相关文章了解。

接下来,完成javascript调用highcharts,请看代码和注释:

  1. var chart;
  2. $(function() {
  3. chart = new Highcharts.Chart({
  4. chart: {
  5. renderTo: 'chart_combo' //关联页面元素div#id
  6. },
  7. title: { //图表标题
  8. text: '2011年东北三大城市水果消费量统计图'
  9. },
  10. xAxis: { //x轴
  11. categories: ['柑橘', '香蕉','苹果', '梨子'], //X轴类别
  12. labels:{y:18} //x轴标签位置:距X轴下方18像素
  13. },
  14. yAxis: { //y轴
  15. title: {text: '消费量(万吨)'}, //y轴标题
  16. lineWidth: 2 //基线宽度
  17. },
  18. tooltip: {
  19. formatter: function() { //格式化鼠标滑向图表数据点时显示的提示框
  20. var s;
  21. if (this.point.name) { // 饼状图
  22. s = '<b>' + this.point.name + '</b>: <br>' + this.y+ '万吨(' +
  23. twoDecimal(this.percentage) + '%)';
  24. } else {
  25. s = '' + this.x + ': ' + this.y + '万吨';
  26. }
  27. return s;
  28. }
  29. },
  30. labels: { //图表标签
  31. items: [{
  32. html: '水果消费总量对比',
  33. style: {
  34. left: '48px',
  35. top: '8px'
  36. }
  37. }]
  38. },
  39. exporting: {
  40. enabled: false //设置导出按钮不可用
  41. },
  42. credits: {
  43. text: 'helloweba.com',
  44. href: 'com'
  45. },
  46. series: [{ //数据列
  47. type: 'column',
  48. name: '长春',
  49. data: [8.4, 9.8, 11.4, 15.6]
  50. },
  51. {
  52. type: 'column',
  53. name: '沈阳',
  54. data: [9.2, 7.8, 10.2, 16.8]
  55. },
  56. {
  57. type: 'column',
  58. name: '哈尔滨',
  59. data: [6.5, 9.4, 13.2, 18.6]
  60. },
  61. {
  62. type: 'spline',
  63. name: '平均值',
  64. data: [8.03, 9, 11.6, 17]
  65. },
  66. {
  67. type: 'pie', //饼状图
  68. name: '水果消费总量',
  69. data: [{
  70. name: '长春',
  71. y: 45.2,
  72. color: '#4572A7'
  73. },
  74. {
  75. name: '沈阳',
  76. y: 44,
  77. color: '#AA4643'
  78. },
  79. {
  80. name: '哈尔滨',
  81. y: 47.7,
  82. color: '#89A54E'
  83. }],
  84. center: [100, 80], //饼状图坐标
  85. size: 100, //饼状图直径大小
  86. dataLabels: {
  87. enabled: false //不显示饼状图数据标签
  88. }
  89. }]
  90. });
  91. });

可以看出,要想在一个图表中(柱状图)加入多种图表形式(曲线图、饼状图等),关键在于设置选项:series(数据列)中的type属性,从上述代码中可以看出,设置column、spline、pie类型表示不同的图表,而在设置饼状图(pie)中,需要设置饼状图的坐标以及大小,调整位置,这样可以使得整个图表显得更加和谐。