当前位置:   article > 正文

微信小程序使用echarts图表(ec-canvas)

ec-canvas

本文微信小程序开发所使用技术:taro+vue+less

taro:v3.3.14

vue:v2.6.14

若使用ec-canvas加载图表时报错如下图:

解决方法①:

echarts.js源码中的t.addEventListener(e,n,i)修改为:t.addEventListener?.(e,n,i)

解决方法②:

echarts.js源码中的function(t)修改为:function(t,window,document)

ec-canvas文件下载地址: https://github.com/ecomfe/echarts-for-weixin

①将ec-canvas文件夹复制到项目目录中

 ②创建要使用的图表组件,例如折线图(LineChart.vue,其他图表类似)

  1. <template>
  2. <view class="m-line-container">
  3. <ec-canvas class="m-container" id="mychart-dom-line" canvas-id="mychart-line" :ec="ec"></ec-canvas>
  4. </view>
  5. </template>
  6. <script>
  7. import * as echarts from '../../../ec-canvas/echarts'
  8. export default {
  9. name: 'LineChart',
  10. props: {
  11. lineData: {
  12. type: Array,
  13. default: () => {
  14. return []
  15. }
  16. },
  17. datePeriod: {
  18. type: Array,
  19. default: () => {
  20. return []
  21. }
  22. },
  23. legend: {
  24. type: String,
  25. default: ''
  26. }
  27. },
  28. data () {
  29. return {
  30. ec: {
  31. onInit: this.initChart
  32. }
  33. }
  34. },
  35. methods: {
  36. initChart(canvas, width, height, dpr) {
  37. console.log(echarts)
  38. const chart = echarts.init(canvas, null, {
  39. width: width,
  40. height: height,
  41. devicePixelRatio: dpr // new
  42. });
  43. canvas.setChart(chart);
  44. console.log(chart)
  45. var option = {
  46. tooltip: {
  47. trigger: 'axis',
  48. confine: true,
  49. formatter: function (params) {
  50. // console.log('params:', params)
  51. var text = params[0].name
  52. const len = params.length
  53. for (var i = 0; i < len; i++) {
  54. text += '年' + '\n' + params[i].marker + params[i].seriesName + ' ' + params[i].value + '万辆'
  55. }
  56. return text
  57. }
  58. },
  59. legend: {
  60. top: 5,
  61. right: 30,
  62. data: [{
  63. name: this.legend,
  64. textStyle: {
  65. color: '#383874'
  66. }
  67. }]
  68. },
  69. grid: {
  70. top: 36
  71. },
  72. color: ['#3B7FF0'],
  73. xAxis: { // 坐标系的X轴设置
  74. type: 'category', // 坐标轴类型,雷姆轴
  75. boundaryGap: false, // 坐标轴两边留白策略
  76. data: this.datePeriod, // X轴类目数据
  77. nameTextStyle: {
  78. color: '#999999',
  79. fontSize: 20
  80. }
  81. },
  82. yAxis: { // 坐标系的Y轴设置
  83. type: 'value', // 数值轴,用于连续数据
  84. axisLabel: {
  85. formatter: '{value}'
  86. },
  87. nameTextStyle: {
  88. color: '#999999',
  89. fontSize: 20
  90. }
  91. },
  92. series: [
  93. {
  94. name: this.legend,
  95. type: 'line',
  96. // areaStyle: { // 渐变面积图
  97. // color: {
  98. // type: 'linear',
  99. // x: 0,
  100. // y: 0,
  101. // x2: 0,
  102. // y2: 1,
  103. // colorStops: [{
  104. // offset: 0, color: '#3A79EE' // 0% 处的颜色
  105. // }, {
  106. // offset: 1, color: '#3B7FF0' // 100% 处的颜色
  107. // }],
  108. // global: false // 缺省为 false
  109. // }
  110. // },
  111. data: this.lineData
  112. }
  113. ]
  114. }
  115. chart.setOption(option)
  116. console.log(chart)
  117. return chart
  118. }
  119. }
  120. }
  121. </script>
  122. <style>
  123. .m-line-container {
  124. width: 100%;
  125. height: 100%;
  126. }
  127. .m-container {
  128. width: 100%;
  129. height: 100%;
  130. }
  131. </style>

③在要使用图表的pages页面配置中引入ec-canvas

  1. export default {
  2. navigationBarTitleText: '折线图',
  3. usingComponents: {
  4. "ec-canvas": "../../ec-canvas/ec-canvas"
  5. }
  6. }

④在要使用图表的页面引入图表组件

  1. <LineChart class="m-line" legend="Tesla产量" v-if="lineData.length" :datePeriod="dateDict" :lineData="lineData" />
  2. import LineChart from './modules/LineChart'
  3. export default {
  4. name: 'Index',
  5. components: {
  6. LineChart
  7. },
  8. data () {
  9. return {
  10. dateDict: [],
  11. lineData: []
  12. }
  13. }
  14. }

⑤若ec-canvas下的charts.js文件过大

可尝试通过在线定制echarts.js的方式解决: ECharts 在线构建

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号