chart-kit.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. // npm install echarts canvas
  2. // const fs = require('fs');
  3. const { createCanvas } = require('canvas');
  4. const echarts = require('echarts');
  5. module.exports = class ChartKit {
  6. // 例子:https://echarts.apache.org/examples/zh/editor.html?c=bar-negative
  7. static printBar(yData, xDataLeft, xDataRight) {
  8. // 创建一个 canvas 实例
  9. const width = 3840; // 宽度
  10. const height = 2160; // 高度
  11. const canvas = createCanvas(width, height);
  12. // 初始化 ECharts 实例
  13. const chart = echarts.init(canvas);
  14. let option = {
  15. tooltip: {
  16. trigger: 'axis',
  17. axisPointer: {
  18. type: 'shadow'
  19. }
  20. },
  21. legend: {
  22. data: ['Profit', 'Expenses', 'Income']
  23. },
  24. grid: {
  25. left: '3%',
  26. right: '4%',
  27. bottom: '3%',
  28. containLabel: true
  29. },
  30. xAxis: [
  31. {
  32. type: 'value'
  33. }
  34. ],
  35. yAxis: [
  36. {
  37. type: 'category',
  38. axisTick: {
  39. show: false
  40. },
  41. data: yData
  42. }
  43. ],
  44. series: [
  45. {
  46. name: 'Expenses',
  47. type: 'bar',
  48. stack: 'Total',
  49. label: {
  50. show: true,
  51. position: 'left'
  52. },
  53. emphasis: {
  54. focus: 'series'
  55. },
  56. data: xDataLeft
  57. },
  58. {
  59. name: 'Income',
  60. type: 'bar',
  61. stack: 'Total',
  62. label: {
  63. show: true
  64. },
  65. emphasis: {
  66. focus: 'series'
  67. },
  68. data: xDataRight
  69. }
  70. ]
  71. };
  72. // 设置图表的配置项和数据
  73. chart.setOption(option);
  74. // 等待图表渲染完毕
  75. // setTimeout(() => {
  76. // const buffer = canvas.toBuffer('image/png');
  77. // fs.writeFileSync('chart.png', buffer);
  78. // chart.dispose(); // 释放图表实例,防止内存泄漏
  79. // console.log('图表已保存为 chart.png');
  80. // }, 1000); // 设置一个延时以确保图表渲染完成
  81. return option
  82. }
  83. // dataList : [[x1,y1], [x2,y2], ...]
  84. static printPointChart(dataList) {
  85. // 创建一个 canvas 实例
  86. const width = 3840; // 宽度
  87. const height = 2160; // 高度
  88. const canvas = createCanvas(width, height);
  89. // 初始化 ECharts 实例
  90. const chart = echarts.init(canvas);
  91. // ECharts 配置项
  92. let option = {
  93. title: {
  94. text: '散点图'
  95. },
  96. xAxis: {},
  97. yAxis: {},
  98. series: [
  99. {
  100. symbolSize: 10,
  101. data: dataList,
  102. type: 'scatter'
  103. }
  104. ]
  105. };
  106. // 设置图表的配置项和数据
  107. chart.setOption(option);
  108. // 等待图表渲染完毕
  109. // setTimeout(() => {
  110. // const buffer = canvas.toBuffer('image/png');
  111. // fs.writeFileSync('chart.png', buffer);
  112. // chart.dispose(); // 释放图表实例,防止内存泄漏
  113. // console.log('图表已保存为 chart.png');
  114. // }, 1000); // 设置一个延时以确保图表渲染完成
  115. return option
  116. }
  117. }