赞
踩
此文章适用于微信小程序中,在uniapp做的小程序中使用echarts
插件地址:echarts-for-wx - DCloud 插件市场
插件网页往下翻有详细的使用步骤,这里简短的贴上几张图片
1.一键导入完插件后,项目根目录的文件夹js_sdk,将其中的uni-ec-canvas文件夹赋值到项目根目录的components中
2.自定义一个组件
- <template>
- <view>
- <uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas" canvas-id="mychart-gauge" :ec="ec">
- </uni-ec-canvas>
- </view>
- </template>
-
- <script>
- import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
- import * as echarts from '@/components/uni-ec-canvas/echarts'
- let chart = null
- export default {
- components: {
- uniEcCanvas
- },
- props: {
- valueData: {
- type: Number,
- // 定义是否必须传
- required: true,
- // 定义默认值
- default: 0
- }
- },
- mounted() {
- this.$refs.canvas.init(this.initChart)
- },
- data() {
- return {
- ec: {
- //是否懒加载, 将 lazyLoad 设为 true 后,需要手动初始化图表
- lazyLoad: true
- },
- }
- },
-
- methods: {
- initChart(canvas, width, height, canvasDpr) {
- chart = echarts.init(canvas, null, {
- width: width,
- height: height,
- devicePixelRatio: canvasDpr
- })
- canvas.setChart(chart)
-
- let option = {
- series: [{
- type: 'gauge',
- center: ['50%', '60%'],
- startAngle: 225,
- endAngle: -45,
- min: 0,
- max: 60,
- splitNumber: 10, //分割的刻度个数
- itemStyle: {
- color: '#4CD289'
- },
- progress: {
- //展示当前进度。
- show: true,
- width: 30,
- roundCap: true //两端是否显示圆形
- },
- pointer: {
- //仪表盘指针
- show: false
- },
- axisLine: {
- //仪表盘轴线相关配置
- // show:false,
- roundCap: true, //两端是否显示圆形
- lineStyle: {
- width: 30
- }
- },
- axisTick: {
- //刻度样式。
- show: false,
- distance: 12, //刻度线与轴线的距离。
- splitNumber: 5, //分隔线之间分割的刻度数
- length: 6, //刻度线长
- lineStyle: {
- width: 2,
- color: '#999'
- }
- },
- splitLine: {
- //分隔线样式。
- show: true,
- distance: 12, //分隔线与轴线的距离。
- length: 6, //分隔线线长
- lineStyle: {
- type: 'dotted',
- width: 3,
- color: '#999'
- }
- },
- axisLabel: {
- //刻度标签。
- show: false,
- distance: -20, //标签与刻度线的距离。
- color: '#999',
- fontSize: 20
- },
- anchor: {
- //表盘中指针的固定点
- show: false
- },
- title: {
- //仪表盘标题
- show: true,
- offsetCenter: [0, '40%'],
- color: '#BCBBCC',
- fontStyle: 'italic',
- fontWeight: 'bold',
- fontSize: 28
- },
- detail: {
- //仪表盘详情,用于显示数据
- show: true,
- valueAnimation: true, //是否开启标签的数字动画
- width: '60%',
- lineHeight: 40,
- borderRadius: 8,
- offsetCenter: ['0', '20%'],
- fontSize: 60,
- fontWeight: 'bolder',
- formatter: '{value}',
- color: 'rgba(76, 210, 137, 1)'
- },
- animation: true, //是否开启动画。
- data: [{
- value: this.valueData,
- name: 'steps'
- }]
- },
- {
- type: 'gauge',
- center: ['50%', '60%'],
- startAngle: 225,
- endAngle: -45,
- min: 0,
- max: 60,
- itemStyle: {
- color: '#4CD289'
- },
- progress: {
- show: true,
- width: 8,
- roundCap: true //两端是否显示圆形
- },
- pointer: {
- show: false
- },
- axisLine: {
- show: false
- },
- axisTick: {
- show: false
- },
- splitLine: {
- show: false
- },
- axisLabel: {
- show: false
- },
- detail: {
- show: false
- },
- data: [{
- value: this.valueData,
- // name: 'steps'
- }]
- }
- ]
- };
- chart.setOption(option)
- return chart
- },
- },
-
- }
- </script>
- <style>
- .uni-ec-canvas {
- width: 100%;
- height: 500rpx;
- display: block;
- margin-top: 30rpx;
- }
- </style>
3.使用组件
- //html
- <view>
- <pie-chart :valueData="valueData"></pie-chart>
- </view>
-
-
- //js
- import pieChart from './components/circleEchat.vue'//这里路径是你自定义组件的放的位置
-
- data() {
- return {
- valueData: 10,
- }
-
- components: { pieChart }
效果图:(小demo不要嫌丑hahaha)
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"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。