当前位置:   article > 正文

uniapp 引入插件市场的echart插件,使用指南!+踩坑记录!!血泪史!!!_uni-ec-canvas

uni-ec-canvas

此文章适用于微信小程序中,在uniapp做的小程序中使用echarts

插件地址:echarts-for-wx - DCloud 插件市场

 

 插件网页往下翻有详细的使用步骤,这里简短的贴上几张图片

 

 以下是我 项目中的使用情况,分享给大家:

1.一键导入完插件后,项目根目录的文件夹js_sdk,将其中的uni-ec-canvas文件夹赋值到项目根目录的components中

 

 2.自定义一个组件

  1. <template>
  2. <view>
  3. <uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas" canvas-id="mychart-gauge" :ec="ec">
  4. </uni-ec-canvas>
  5. </view>
  6. </template>
  7. <script>
  8. import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
  9. import * as echarts from '@/components/uni-ec-canvas/echarts'
  10. let chart = null
  11. export default {
  12. components: {
  13. uniEcCanvas
  14. },
  15. props: {
  16. valueData: {
  17. type: Number,
  18. // 定义是否必须传
  19. required: true,
  20. // 定义默认值
  21. default: 0
  22. }
  23. },
  24. mounted() {
  25. this.$refs.canvas.init(this.initChart)
  26. },
  27. data() {
  28. return {
  29. ec: {
  30. //是否懒加载, 将 lazyLoad 设为 true 后,需要手动初始化图表
  31. lazyLoad: true
  32. },
  33. }
  34. },
  35. methods: {
  36. initChart(canvas, width, height, canvasDpr) {
  37. chart = echarts.init(canvas, null, {
  38. width: width,
  39. height: height,
  40. devicePixelRatio: canvasDpr
  41. })
  42. canvas.setChart(chart)
  43. let option = {
  44. series: [{
  45. type: 'gauge',
  46. center: ['50%', '60%'],
  47. startAngle: 225,
  48. endAngle: -45,
  49. min: 0,
  50. max: 60,
  51. splitNumber: 10, //分割的刻度个数
  52. itemStyle: {
  53. color: '#4CD289'
  54. },
  55. progress: {
  56. //展示当前进度。
  57. show: true,
  58. width: 30,
  59. roundCap: true //两端是否显示圆形
  60. },
  61. pointer: {
  62. //仪表盘指针
  63. show: false
  64. },
  65. axisLine: {
  66. //仪表盘轴线相关配置
  67. // show:false,
  68. roundCap: true, //两端是否显示圆形
  69. lineStyle: {
  70. width: 30
  71. }
  72. },
  73. axisTick: {
  74. //刻度样式。
  75. show: false,
  76. distance: 12, //刻度线与轴线的距离。
  77. splitNumber: 5, //分隔线之间分割的刻度数
  78. length: 6, //刻度线长
  79. lineStyle: {
  80. width: 2,
  81. color: '#999'
  82. }
  83. },
  84. splitLine: {
  85. //分隔线样式。
  86. show: true,
  87. distance: 12, //分隔线与轴线的距离。
  88. length: 6, //分隔线线长
  89. lineStyle: {
  90. type: 'dotted',
  91. width: 3,
  92. color: '#999'
  93. }
  94. },
  95. axisLabel: {
  96. //刻度标签。
  97. show: false,
  98. distance: -20, //标签与刻度线的距离。
  99. color: '#999',
  100. fontSize: 20
  101. },
  102. anchor: {
  103. //表盘中指针的固定点
  104. show: false
  105. },
  106. title: {
  107. //仪表盘标题
  108. show: true,
  109. offsetCenter: [0, '40%'],
  110. color: '#BCBBCC',
  111. fontStyle: 'italic',
  112. fontWeight: 'bold',
  113. fontSize: 28
  114. },
  115. detail: {
  116. //仪表盘详情,用于显示数据
  117. show: true,
  118. valueAnimation: true, //是否开启标签的数字动画
  119. width: '60%',
  120. lineHeight: 40,
  121. borderRadius: 8,
  122. offsetCenter: ['0', '20%'],
  123. fontSize: 60,
  124. fontWeight: 'bolder',
  125. formatter: '{value}',
  126. color: 'rgba(76, 210, 137, 1)'
  127. },
  128. animation: true, //是否开启动画。
  129. data: [{
  130. value: this.valueData,
  131. name: 'steps'
  132. }]
  133. },
  134. {
  135. type: 'gauge',
  136. center: ['50%', '60%'],
  137. startAngle: 225,
  138. endAngle: -45,
  139. min: 0,
  140. max: 60,
  141. itemStyle: {
  142. color: '#4CD289'
  143. },
  144. progress: {
  145. show: true,
  146. width: 8,
  147. roundCap: true //两端是否显示圆形
  148. },
  149. pointer: {
  150. show: false
  151. },
  152. axisLine: {
  153. show: false
  154. },
  155. axisTick: {
  156. show: false
  157. },
  158. splitLine: {
  159. show: false
  160. },
  161. axisLabel: {
  162. show: false
  163. },
  164. detail: {
  165. show: false
  166. },
  167. data: [{
  168. value: this.valueData,
  169. // name: 'steps'
  170. }]
  171. }
  172. ]
  173. };
  174. chart.setOption(option)
  175. return chart
  176. },
  177. },
  178. }
  179. </script>
  180. <style>
  181. .uni-ec-canvas {
  182. width: 100%;
  183. height: 500rpx;
  184. display: block;
  185. margin-top: 30rpx;
  186. }
  187. </style>

 3.使用组件

  1. //html
  2. <view>
  3. <pie-chart :valueData="valueData"></pie-chart>
  4. </view>
  5. //js
  6. import pieChart from './components/circleEchat.vue'//这里路径是你自定义组件的放的位置
  7. data() {
  8. return {
  9. valueData: 10,
  10. }
  11. components: { pieChart }

 效果图:(小demo不要嫌丑hahaha)

  Echarts各式各样的定制化图表
 

Made A Pie 复刻Make A Pie 地址
Echarts社区makeapie 复刻Make A Pie 地址
MCChart 地址
PPChart 地址
ISQQW 地址
chartsdev 复刻Make A Pie 地址

文件太大怎么办?

本项目默认提供的 ECharts 文件是最新版本的包含所有组件文件,为了便于开发,提供的是未压缩的版本。远程调试或预览可以下载 echarts.min.js 压缩版本。或从官网下载压缩版本

发布时,如果对文件大小要求更高,可以在 ECharts 在线定制网页下载仅包含必要组件的包,并且选择压缩。

下载的文件放在 uni-ec-canvas/echarts.js注意一定需要重命名为 echarts.js

下载了自定义最新版本的js文件后,发现样式不能用并且报错 TypeErreor: el.addEventListener is not a function

解决办法:

 还必须要用5.1.2版本的echarts 。因为小程序echarts插件文档 v2.1.1 默认是5.1.2版本。

官网上最新的为5.3.1版本 不匹配,小程序插件太久没更新了吧

解决办法来源于这里

23-4-12 更新------

图表画好了以后,准备下载压缩后的echart.js文件发现就不显示图表了,目前没找到原因,不压缩的echart文件就可以正常运行。

经漫长的找bug过程,发现下载压缩的echarts.js版本5.0.0 到5.2.2版本 我都测试都是可以运行的,其他版本没有测试。

uniapp插件版本1.0.3  想要是用成功,版本的对应很重要, 还有就是如果不报错但还是不显示图表,有可能是css样式高度或宽度没给,上述代码中我给的宽度是百分比,有时候百分比不生效就给定值,就可以解决。如果没有图表生成的话,那就给uni-ec-canvas组件加上:force-use-old-canvas="true"

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/123973
推荐阅读
相关标签
  

闽ICP备14008679号