FundCharts

功能描述

FundCharts是轻量级canvas图表库,基于原生js, 仅29kb

依赖模块

快速使用

  1. var BarChart = FundCharts.bar
  2. var LineChart = FundCharts.line
  3. var PieChart = FundCharts.pie
  4. var RadarChart = FundCharts.radar
  5. var ScatterChart = FundCharts.scatter
  6. var KlineChart = FundCharts.kline
  7. var bar = new BarChart({
  8. id: 'bar',
  9. xaxis: ['07-11', '08-11', '09-11', '09-22', '10-11', '11-11', '12-11', '12-12'],
  10. datas: [
  11. [1, 3, 2, 3, 3.2, 4, 5]
  12. ],
  13. hover: function (index, yValues, xValues, x) { // 索引, datas值集合,xaxis[index], touch event横坐标
  14. console.log(index, yValues, xValues, x);
  15. var ctx = bar.ctx;
  16. var datasets = bar.datasets[0]; // 坐标集
  17. var _zero = bar.drawer.zeroY; // 0刻度坐标
  18. ctx.lineWidth = 1;
  19. ctx.textAlign = 'center';
  20. ctx.textBaseline = 'middle';
  21. ctx.font = '12px Arial';
  22. ctx.fillStyle = '#000';
  23. ctx.fillText(
  24. yValues[0].toFixed(1),
  25. datasets[index].x + 6,
  26. datasets[index].y + 10 * (datasets[index].y > _zero && 1 || -1)
  27. );
  28. }
  29. })
  30. bar.init();
  31. new LineChart({
  32. id: 'line',
  33. xaxis: ['07-11', '08-11', '09-11', '09-22', '10-11', '11-11', '12-11'],
  34. datas: [
  35. [1, 2, 3, 4, 3.5, 3, 4]
  36. ],
  37. hover: function (index, values, xaxis) { // 索引,datas集合,xaxis[index],触控点横坐标x
  38. console.log(values[0], xaxis);
  39. }
  40. }).init();
  41. var pieLabels = [
  42. '吃饭',
  43. '睡觉',
  44. '打豆豆',
  45. '吃豆豆'
  46. ];
  47. var pie = new PieChart({
  48. id: 'pie',
  49. datas: [0.1, 0.2, 0.3, 0.4],
  50. hover: function (index, values) {
  51. var ctx = pie.ctx, _origin = pie.drawer.origin;
  52. // draw texts
  53. ctx.fillStyle = pie.opts.colors[index];
  54. ctx.font = 'bold 22px consolas';
  55. ctx.textAlign = 'center';
  56. ctx.fillText(pieLabels[index], _origin.x, 90);
  57. ctx.fillStyle = '#666';
  58. ctx.fillText((values[0] * 100).toFixed(1) + '%', _origin.x, 120);
  59. }
  60. })
  61. pie.init()
  62. var radar = new RadarChart({
  63. id: 'radar',
  64. hidePoints: true, // 无点
  65. datas: [
  66. [1, 2, 3, 4, 3.5, 3, 4],
  67. [4, 3, 3, 4, 3.5, 3, 4]
  68. ],
  69. hover: function (index, values) {
  70. console.log(index, values);
  71. var ctx = radar.ctx;
  72. ctx.lineWidth = 1;
  73. ctx.textAlign = 'center';
  74. ctx.textBaseline = 'middle';
  75. ctx.font = '12px Arial';
  76. ctx.fillStyle = '#000';
  77. ctx.fillText(
  78. 'data1: ' + values[0].toFixed(2),
  79. 320,
  80. 70
  81. );
  82. ctx.fillText(
  83. 'data2: ' + values[1].toFixed(2),
  84. 320,
  85. 100
  86. );
  87. }
  88. });
  89. radar.init();
  90. new ScatterChart({
  91. id: 'scatter',
  92. data: [
  93. [1, 2],
  94. [3, 4],
  95. [3, 5.5],
  96. [3.5, 4.4],
  97. [5, 6],
  98. [7, 3]
  99. ]
  100. }).init();
  101. var kline = new KlineChart({
  102. id: 'kline',
  103. xaxis: ['1-1', '1-2', '1-3', '1-4', '1-5', '1-6'],
  104. datas: [
  105. [1, 2, 0.5, 2.1],
  106. [3, 4, 2, 4],
  107. [3, 5.5, 3, 6],
  108. [4.4, 3.5, 3, 5],
  109. [5, 6, 4, 7],
  110. [7, 3, 3, 7]
  111. ],
  112. hover: function (index, values, xaxis, x, y) { // 索引,datas当前数据集合,xaxis[index], 触控事件x坐标,触控事件y坐标
  113. var ctx = kline.ctx,
  114. _drawer = kline.drawer,
  115. _width = kline._chart.width,
  116. _height = kline._chart.height;
  117. ctx.fillStyle = 'rgba(0, 0, 0, 0.3)';
  118. var _rectX = x - 32;
  119. _rectX = _rectX < 50 ? 50 : _rectX > _width ? _width : _rectX;
  120. ctx.fillRect(_rectX, _height - 40, 64, 15);
  121. ctx.fillRect(kline.opts.chartLeft, y - 7, 30, 15);
  122. // text
  123. ctx.fillStyle = '#fff';
  124. ctx.font = '12px Arial';
  125. ctx.textAlign = 'center';
  126. ctx.fillText(xaxis, _rectX + 32, _height - 32);
  127. ctx.fillText(
  128. ((y - _drawer.yBasic) / _drawer.yRate).toFixed(2),
  129. kline.opts.chartLeft + 15,
  130. y);
  131. ctx.closePath();
  132. ctx.stroke();
  133. }
  134. });
  135. kline.init();

支持类型

  • 柱状图 bar
  • 折线图 line
  • 饼图 pie
  • 雷达图 radar
  • 散点图 scatter
  • k线图 kline

配置项

id

  • 类型:String
  • 默认值:null
  • 作用:容器id | canvas元素id
  • 是否必传:是

    xaxis

  • 类型:Array

  • 默认值:null
  • 作用:x轴标签数组
  • 是否必传:是

    datas

  • 类型:Array

  • 默认值:none
  • 作用:数据项数组
  • 是否必传:是

    backgroundColor

  • 类型:String

  • 默认值:#fff
  • 作用:画布背景色
  • 是否必传:否

    chartLeft

  • 类型:Number

  • 默认值:50
  • 作用:图表主要内容(图形区域)距左边距离,单位为px
  • 是否必传:否

    chartRight

  • 类型:Number

  • 默认值:15
  • 作用:图表主要内容(图形区域)距右边距离,单位为px
  • 是否必传:否

    chartTop

  • 类型:Number

  • 默认值:0
  • 作用:图表主要内容(图形区域)距顶部距离,单位为px
  • 是否必传:否

    hover

  • 类型:Function

  • 默认值:无
  • 作用:交互返回函数
  • 是否必传:否

    onAnimation

  • 类型:Function

  • 默认值:无
  • 作用:动画执行时回调
  • 是否必传:否

    onFinish

  • 类型:Function

  • 默认值:无
  • 作用:动画结束后回调
  • 是否必传:否

方法

更新

  1. chart.update({
  2. xaxis: ['07-11', '08-11', '09-11', '09-22', '10-11', '11-11', '12-11'],
  3. datas: [
  4. [4, 3, 4, 2, 3, 5, 6],
  5. [1, 2, 3, 4, 3.5, 3, 4],
  6. [6, 2, 4, 5, 5, 2, 1]
  7. ]
  8. })

特别说明

更多配置和用法,请参考FundCharts