课程表

Highcharts课程

工具箱
速查手册

Highcharts 动态图

当前位置:免费教程 » JS/JS库/框架 » Highcharts

本章节我们将为大家介绍 Highcharts 的动态图。

我们在前面的章节已经了解了 Highcharts 配置语法。接下来让我们来看下 Highcharts 的其他配置。


每秒更新曲线图

chart.events

chart.event 属性中添加 load 方法(图表加载事件)。在 1000 毫秒内随机产生数据点并生成图表。

  1. chart: {
  2. events: {
  3. load: function () {
  4. // 图表每秒更新一次
  5. var series = this.series[0];
  6. setInterval(function () {
  7. var x = (new Date()).getTime(), // 当期时间
  8. y = Math.random();
  9. series.addPoint([x, y], true, true);
  10. }, 1000);
  11. }
  12. }
  13. }

实例

文件名:highcharts_dynamic_spline.htm

  1. <html>
  2. <head>
  3. <meta charset="UTF-8" />
  4. <title>Highcharts 教程 | W3xue教程(w3xue.com)</title>
  5. <script src="/js/jquery-2.1.4.min.js"></script>
  6. <script src="/js/hc/highcharts5.0.6.js"></script></head>
  7. <body>
  8. <div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
  9. <script language="JavaScript">
  10. $(document).ready(function() {
  11. var chart = {
  12. type: 'spline',
  13. animation: Highcharts.svg, // don't animate in IE < IE 10.
  14. marginRight: 10,
  15. events: {
  16. load: function () {
  17. // set up the updating of the chart each second
  18. var series = this.series[0];
  19. setInterval(function () {
  20. var x = (new Date()).getTime(), // current time
  21. y = Math.random();
  22. series.addPoint([x, y], true, true);
  23. }, 1000);
  24. }
  25. }
  26. };
  27. var title = {
  28. text: 'Live random data'
  29. };
  30. var xAxis = {
  31. type: 'datetime',
  32. tickPixelInterval: 150
  33. };
  34. var yAxis = {
  35. title: {
  36. text: 'Value'
  37. },
  38. plotLines: [{
  39. value: 0,
  40. width: 1,
  41. color: '#808080'
  42. }]
  43. };
  44. var tooltip = {
  45. formatter: function () {
  46. return '<b>' + this.series.name + '</b><br/>' +
  47. Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
  48. Highcharts.numberFormat(this.y, 2);
  49. }
  50. };
  51. var plotOptions = {
  52. area: {
  53. pointStart: 1940,
  54. marker: {
  55. enabled: false,
  56. symbol: 'circle',
  57. radius: 2,
  58. states: {
  59. hover: {
  60. enabled: true
  61. }
  62. }
  63. }
  64. }
  65. };
  66. var legend = {
  67. enabled: false
  68. };
  69. var exporting = {
  70. enabled: false
  71. };
  72. var series= [{
  73. name: 'Random data',
  74. data: (function () {
  75. // generate an array of random data
  76. var data = [],time = (new Date()).getTime(),i;
  77. for (i = -19; i <= 0; i += 1) {
  78. data.push({
  79. x: time + i * 1000,
  80. y: Math.random()
  81. });
  82. }
  83. return data;
  84. }())
  85. }];
  86. var json = {};
  87. json.chart = chart;
  88. json.title = title;
  89. json.tooltip = tooltip;
  90. json.xAxis = xAxis;
  91. json.yAxis = yAxis;
  92. json.legend = legend;
  93. json.exporting = exporting;
  94. json.series = series;
  95. json.plotOptions = plotOptions;
  96. Highcharts.setOptions({
  97. global: {
  98. useUTC: false
  99. }
  100. });
  101. $('#container').highcharts(json);
  102. });
  103. </script>
  104. </body>
  105. </html>

我来试一下

以上实例输出结果为:


通过点击添加数据

chart.events

在 chart.event 属性中添加 click 方法(整个图表的绘图区上所发生的点击事件)。该方法在图表绘图区上发生点击时会添加新的数据点。

  1. chart: {
  2. events: {
  3. click: function (e) {
  4. // 获取点击坐标和数据项
  5. var x = e.xAxis[0].value,
  6. y = e.yAxis[0].value,
  7. series = this.series[0];
  8. // 添加点击的坐标
  9. series.addPoint([x, y]);
  10. }
  11. }
  12. }

实例

文件名:highcharts_dynamic_click.htm

  1. <html>
  2. <head>
  3. <title>Highcharts 教程 | W3xue教程(w3xue.com)</title>
  4. <script src="/js/jquery-2.1.4.min.js"></script>
  5. <script src="highcharts.js"></script>
  6. </head>
  7. <body>
  8. <div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
  9. <script language="JavaScript">
  10. $(document).ready(function() {
  11. var chart = {
  12. type: 'scatter',
  13. margin: [70, 50, 60, 80],
  14. events: {
  15. click: function (e) {
  16. // find the clicked values and the series
  17. var x = e.xAxis[0].value,
  18. y = e.yAxis[0].value,
  19. series = this.series[0];
  20. // Add it
  21. series.addPoint([x, y]);
  22. }
  23. }
  24. };
  25. var title = {
  26. text: 'User supplied data'
  27. };
  28. var subtitle = {
  29. text: 'Click the plot area to add a point. Click a point to remove it.'
  30. };
  31. var xAxis = {
  32. gridLineWidth: 1,
  33. minPadding: 0.2,
  34. maxPadding: 0.2,
  35. maxZoom: 60
  36. };
  37. var yAxis = {
  38. title: {
  39. text: 'Value'
  40. },
  41. minPadding: 0.2,
  42. maxPadding: 0.2,
  43. maxZoom: 60,
  44. plotLines: [{
  45. value: 0,
  46. width: 1,
  47. color: '#808080'
  48. }]
  49. };
  50. var legend = {
  51. enabled: false
  52. };
  53. var exporting = {
  54. enabled: false
  55. };
  56. var plotOptions = {
  57. series: {
  58. lineWidth: 1,
  59. point: {
  60. events: {
  61. 'click': function () {
  62. if (this.series.data.length > 1) {
  63. this.remove();
  64. }
  65. }
  66. }
  67. }
  68. }
  69. };
  70. var series= [{
  71. data: [[20, 20], [80, 80]]
  72. }];
  73. var json = {};
  74. json.chart = chart;
  75. json.title = title;
  76. json.subtitle = subtitle;
  77. json.xAxis = xAxis;
  78. json.yAxis = yAxis;
  79. json.legend = legend;
  80. json.exporting = exporting;
  81. json.series = series;
  82. json.plotOptions = plotOptions;
  83. $('#container').highcharts(json);
  84. });
  85. </script>
  86. </body>
  87. </html>

我来试一下

以上实例输出结果为:

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号