UNIAPP微信小程序使用Echarts

简介: UNIAPP微信小程序使用Echarts

UNIAPP微信小程序使用Echarts

1. 前言

最近要在uniapp做的小程序中使用echarts,网上搜了很多教程都很麻烦,这里提供一种简便快捷CV方案。

先说下图表选型的问题,如果你只用于微信小程序,可以使用本方案,Echarts丰富多样的图表和广大的开源图库都已使用。如果要考虑兼容性问题,比如兼容支付宝小程序、APP、百度小程序……这里推荐使用uchart。缺点就是图表样式没有Echarts丰富。

2. 下载EchartsForWx插件


需要首先确保本机安装了Hbuilder

  1. 打开插件市场的**echarts-for-wx**插件。点击使用Hbuilder导入插件。

  1. 导入插件后,在项目目录会有一个js_sdk的文件夹生成。复制js_sdk下的uni-ec-canvas到根目录的components目录。

3. 自定义Echarts组件

在根目录的components文件夹下此时已经有了一个uni-ec-canvas的组件。我们这里新建一个pieChart的组件。

组件内容如下

<template>
  <view>
    <uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas" canvas-id="uni-ec-canvas" :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: {
      abnormal: {
        type: Number,
        // 定义是否必须传
        required: true,
        // 定义默认值
        default: 0
      },
      absence: {
        type: Number,
        // 定义是否必须传
        required: true,
        // 定义默认值
        default: 0
      },
    },
    data() {
      return {
        ec: {
          //是否懒加载
          lazyLoad: true
        },
      }
    },
    methods: {
      initChart(canvas, width, height, canvasDpr) {
        chart = echarts.init(canvas, null, {
          width: width,
          height: height,
          devicePixelRatio: canvasDpr
        })
        canvas.setChart(chart)
        var data=[{value:this.abnormal, name:'正常',"itemStyle":{"normal":{"color":"#00CCB8"}}},
          {value:this.absence, name:'异常',"itemStyle":{"normal":{"color":"#FFCB96"}}}];
        var dataName = data.reduce((per,cur,i)=>{per[i]=cur.name;return per},[]);
        var a=0;
        for(var i=0; i<data.length; i++)
        {
          a+=data[i].value;
        }
        data.push({value:a, name:'__other', itemStyle:{normal:{color:'rgba(0,0,0,0)'}}});
        let option = {
          legend: {
            orient: "horizontal",//图例的布局,水平布局、垂直布局
            icon:'circle',
            bottom:50,
            textStyle: {//图例字体样式
              color: "#00CCB8",
              fontSize: 15,
              fontFamily: "微软雅黑"
            },
            data:dataName,
            formatter: e =>{
              let val=0;
              data.forEach(el => {
                if(e == el.name) val = el.value
              });
              return `${e}${val}天`
            }
          },
          series : [
            {
              name: '上下班统计',
              type: 'pie',
              startAngle:-180,
              radius : '95%',
              center: ['50%', '60%'],
              data:data,
              itemStyle: {
                borderRadius:0,
                borderColor:'#fff',
                borderWidth:5
              },
              label: {
                normal: {
                  show: false,
                },
              },
              labelLine: {
                normal: {
                  show: false
                }
              },
            }
          ]
        };
        chart.setOption(option)
        return chart
      },
    },
    mounted() {
      this.$refs.canvas.init(this.initChart)
    }
  }
</script>
<style>
  .uni-ec-canvas {
    width: 100%;
    height: 500rpx;
    display: block;
    margin-top: 30rpx;
  }
</style>

4. 使用组件

<template>
  <view>
    <pie-chart :abnormal="abnormal" :absence="absence"></pie-chart>
  </view>
</template>
<script>
  import pieChart from '@/components/pieChart/index'
  let chart = null
  export default {
    components: {
      pieChart
    },
    data() {
      return {
        abnormal:10,
        absence:19,
      }
    },
  }
</script>

5. 效果图


6. Echarts各式各样的定制化图表

Made A Pie https://madeapie.com 复刻Make A Pie

Echarts社区makeapie https://www.makeapie.cn/echarts 复刻Make A Pie

MCChart http://echarts.zhangmuchen.top/#/index

PPChart http://ppchart.com/

ISQQW https://www.isqqw.com/homepage

chartsdev http://chartsdev.com/ 复刻Make A Pie

目录
相关文章
|
21天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
26天前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
26 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
315 3
|
2月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
73 1
|
2月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
55 0
微信小程序更新提醒uniapp
|
2月前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
47 2
|
2月前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
31 0
|
2月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
88 0
|
2月前
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
50 0
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
649 7