使用Highcharts生成折线图与曲线图

jerry JQuery 2015年08月20日 收藏

折线图与曲线图可以显示随时间而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。本文将结合Highcharts,生成一个城市气温变化折线图和一个随时间动态即时显示CPU走势的曲线图。

查看演示

如果您看了本站前面两篇关于Highcharts的文章,应该对Highcharts有所了解,所以本文侧重JS配置来完成图表的设计。如果您还不知道什么是Highcharts,请先阅读本站前面的文章。

1、城市气温变化折线图

通过以下配置,可以生成一个带网格的、显示数据点具体数据的、可放大的、去除LOGO标签的折线图。具体请看代码和注释

  1. var chart;
  2. $(function() {
  3. chart = new Highcharts.Chart({
  4. chart: {
  5. renderTo: 'chart_line', //图表放置的容器,DIV
  6. defaultSeriesType: 'line', //图表类型line(折线图),
  7. zoomType: 'x' //x轴方向可以缩放
  8. },
  9. credits: {
  10. enabled: false //右下角不显示LOGO
  11. },
  12. title: {
  13. text: '主要城市月平均气温' //图表标题
  14. },
  15. subtitle: {
  16. text: '2011年' //副标题
  17. },
  18. xAxis: { //x轴
  19. categories: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月',
  20. '11月', '12月'], //x轴标签名称
  21. gridLineWidth: 1, //设置网格宽度为1
  22. lineWidth: 2, //基线宽度
  23. labels:{y:26} //x轴标签位置:距X轴下方26像素
  24. },
  25. yAxis: { //y轴
  26. title: {text: '平均气温(°C)'}, //标题
  27. lineWidth: 2 //基线宽度
  28. },
  29. plotOptions:{ //设置数据点
  30. line:{
  31. dataLabels:{
  32. enabled:true //在数据点上显示对应的数据值
  33. },
  34. enableMouseTracking: false //取消鼠标滑向触发提示框
  35. }
  36. },
  37. legend: { //图例
  38. layout: 'horizontal', //图例显示的样式:水平(horizontal)/垂直(vertical)
  39. backgroundColor: '#ffc', //图例背景色
  40. align: 'left', //图例水平对齐方式
  41. verticalAlign: 'top', //图例垂直对齐方式
  42. x: 100, //相对X位移
  43. y: 70, //相对Y位移
  44. floating: true, //设置可浮动
  45. shadow: true //设置阴影
  46. },
  47. exporting: {
  48. enabled: false //设置导出按钮不可用
  49. },
  50. series: [{ //数据列
  51. name: '北京',
  52. data: [ - 4.6, -2.2, 4.5, 13.1, 19.8, 24.0, 25.8, 24.4, 19.3, 12.4, 4.1, -2.7]
  53. },
  54. {
  55. name: '广州',
  56. data: [13.3, 14.4, 17.7, 21.9, 24.6, 27.2, 30.8, 32.1, 27.2, 23.7, 21.3, 15.6]
  57. }]
  58. });
  59. });

2、CPU使用记录走势图

通过相关配置,可以生成一个随着时间变化(每隔5秒更新一次)的曲线图。

  1. var chart;
  2. $(function() {
  3. chart = new Highcharts.Chart({
  4. chart: {
  5. renderTo: 'chart_spline', //图表放置的容器,DIV
  6. defaultSeriesType: 'spline', //图表类型为曲线图
  7. events: {
  8. load: function() {
  9. var series = this.series[0];
  10. //每隔5秒钟,图表更新一次,y数据值在0-100之间的随机数
  11. setInterval(function() {
  12. var x = (new Date()).getTime(), // 当前时间
  13. y = Math.random()*100;
  14. series.addPoint([x, y], true, true);
  15. },
  16. 5000);
  17. }
  18. }
  19. },
  20. title: {
  21. text: 'CPU使用记录走势图' //图表标题
  22. },
  23. xAxis: { //设置X轴
  24. type: 'datetime', //X轴为日期时间类型
  25. tickPixelInterval: 150 //X轴标签间隔
  26. },
  27. yAxis: { //设置Y轴
  28. title: '',
  29. max: 100, //Y轴最大值
  30. min: 0 //Y轴最小值
  31. },
  32. tooltip: {//当鼠标悬置数据点时的提示框
  33. formatter: function() { //格式化提示信息
  34. return 'CPU使用率
    '+
  35. Highcharts.dateFormat('%H:%M:%S', this.x) +'
    '+
  36. Highcharts.numberFormat(this.y, 2)+'%';
  37. }
  38. },
  39. legend: {
  40. enabled: false //设置图例不可见
  41. },
  42. exporting: {
  43. enabled: false //设置导出按钮不可用
  44. },
  45. credits: {
  46. text: 'Helloweba.com', //设置LOGO区文字
  47. url: 'com' //设置LOGO链接地址
  48. },
  49. series: [{
  50. data: (function() { //设置默认数据,
  51. var data = [],
  52. time = (new Date()).getTime(),
  53. i;
  54. for (i = -19; i <= 0; i++) {
  55. data.push({
  56. x: time + i * 5000,
  57. y: Math.random()*100
  58. });
  59. }
  60. return data;
  61. })()
  62. }]
  63. });
  64. });

注意,当X轴类型为datetime日期时间型的,需要设置时区,在开头加上以下代码即可:

  1. Highcharts.setOptions({
  2. global: {
  3. useUTC: false
  4. }
  5. });