首页 > 编程语言 >微信小程序echarts-饼状图

微信小程序echarts-饼状图

时间:2024-08-22 10:27:42浏览次数:12  
标签:show true 微信 pieObj pieChart params data echarts 状图

为了兼容小程序 Canvas,我们提供了一个小程序的组件,用这种方式可以方便地使用 ECharts。

首先,下载 GitHub 上的 ecomfe/echarts-for-weixin 项目。

一、封装pieChart组件

pieChart.wxml:

<view class="container">
    <ec-canvas id="mychart-dom-bar" class='mychart-bar' canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>

pieChart.json:

"usingComponents": {
    "ec-canvas": "../../utils/ec-canvas/ec-canvas"
}

pieChart.wxss:

.container {
    width: 100%;
    height: 600rpx;
    font-size: 0;
    /* background-color: pink; */
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
}

.mychart-bar {
    display: inline-block;
    width: 100%;
    height: 100%;
    vertical-align: top;
}

pieChart.js:

import * as echarts from '../../utils/ec-canvas/echarts';

Component({
    data: {
        ec: {
            lazyLoad: false, // 延迟加载
        }, //饼图
        pieObj: null,
    },
    piechartsComponnet: null,
    properties: {
        dataObj: {
            type: Object,
            observer: function (nVal, oVal) {
                // console.log(nVal)
                if (nVal) {
                    this.setData({
                        pieObj: nVal,
                    })
                    setTimeout(() => {
                        this.init_pieCharts()
                    }, 300);
                }
            },
        },
    },
    lifetimes: {
        attached: function () {
            this.piechartsComponnet = this.selectComponent('#mychart-dom-bar'); //饼图
        }
    },
    methods: {
        init_pieCharts: function () { //初始化图表--饼图
            this.piechartsComponnet.init((canvas, width, height) => {
                // 初始化图表
                const pieChart = echarts.init(canvas, null, {
                    width: width,
                    height: height
                });
                pieChart.setOption(this.getPieOption());
                // 注意这里一定要返回 chart 实例,否则会影响事件处理等
                return pieChart;
            });
        },
        getPieOption: function () { //饼图
            console.log(this.data.pieObj)
            var pieObj = this.data.pieObj;
            /*
                开发文档参考:https://echarts.apache.org/zh/option.html#legend.zlevel
            */
            var option = {
                title: {
                    // text: '收益分布',
                    subtext: pieObj.title || '',
                    left: 15,
                },
                tooltip: {
                    show: true,
                    formatter: function (params) {
                        // console.log(params)
                        return params.name + ': ' + params.data.number + ' (' + (params.percent - 0).toFixed(0) + '%)'
                    }
                },
                toolbox: {
                    show: true,
                    feature: {
                        mark: {
                            show: true
                        },
                        dataView: {
                            show: true,
                            readOnly: false
                        },
                        restore: {
                            show: true
                        },
                        saveAsImage: {
                            show: true
                        }
                    }
                },
                legend: {
                    orient: 'vertical',
                    right: 20,
                    align: 'left',
                    bottom: '25%',
                    itemWidth: 10,
                    itemHeight: 10,
                },
                color: pieObj.color || ['#FEDC75', '#797AFF', '#FE8683'],
                calculable: true,
                series: [{
                    name: '收益分布',
                    type: 'pie',
                    center: ['35%', '50%'],
                    radius: 80,
                    itemStyle: {
                        normal: {
                            label: {
                                show: true,
                                position: 'inner',
                                formatter: function (params) {
                                    // console.log(params)
                                    return params.data.number + '\n' + (params.percent - 0).toFixed(0) + '%'
                                }
                            },
                            labelLine: {
                                show: false
                            }
                        },
                    },
                    data: pieObj.data
                }]
            }
            // var option = this.data.pieObj;
            // console.log(option)
            return option;
        },

    }
});

二、使用组件

wxml

<pieChart dataObj="{{dataObj1}}" class="ec-canvas" force-use-old-canvas="true"></pieChart>

json

"usingComponents": {
    "pieChart": "/components/echart/pieChart"
}

js

//处理饼状图数据 
this.setData({
            dataObj1: {
                title: '收益分布', //标题
                color: ['#797AFF', '#FE8683', '#FEDC75'], //饼状图颜色
                data: [{
                        value: 50,
                        number: 1000,
                        name: '交易收益',

                    }, {
                        value: 30,
                        number: 600,
                        name: '企业功能收益'
                    },
                    {
                        value: 20,
                        number: 400,
                        name: '新会员共享收益'
                    }
                ]
            },
})

显示图:

 

标签:show,true,微信,pieObj,pieChart,params,data,echarts,状图
From: https://www.cnblogs.com/czhowe/p/18373125

相关文章

  • 微信答题小程序产品研发全流程
    明月别枝惊鹊,清风半夜鸣蝉。稻花香里说丰年,听取蛙声一片。我前面说过,我仿了一款答题小程序。现在,整理一下微信答题小程序产品研发全流程,分享给迈入或者深耕题库小程序这一领域的小伙伴。题库软件产品开发不仅仅是写代码这一环,它包含从需求调研、分析与构思、设计到开发、测试......
  • 【嵌入式裸机开发】智能家居入门7:最新ONENET,MQTT协议接入,最全最新(微信小程序、MQTT协
    智能家居入门7前言一、ONENET云平台创建产品与设备二、STM32端连接服务器前的准备三、STM32端实现四、微信小程序端连接服务器前的准备五、微信小程序端实现六、最终测试前言本篇文章介绍最新ONENET云平台的MQTT协议接入方法,在STM32上实现数据上云与服务器下发数据......
  • 基于微信小程序的宠物服务中心
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言疫情爆发以来,越来越多的用户借助于移动手机、电脑完成生活中的事务,许多的传统行业也更加重视与互联网的结合。本论文探讨利用不断发展和进步的网络技术,实现对个人信......
  • R绘图(06)——带errorbar的柱状图
      每次找R绘图美化都很麻烦,索性自己写个笔记慢慢补充绘图美化的指令###生成数据####设置种子以获得可重复的结果set.seed(222)#生成字符序列"AAAABBBB"char_sequence<-c("A","A","A","A","B","B","B","B")#......
  • Vue3使用VueEcharts实现图表
    这里以折线图为例,其他以此类推编写折线图子组件 <scriptlang="ts"setup>import{useDark}from'@vueuse/core'importmomentfrom'moment'import{computed}from'vue'importVueEchartsfrom'vue-echarts'constprops......
  • 实现电脑同时登录两个微信账号
    ‌1.使用回车键双击微信图标‌:在按住键盘上的回车键的同时,双击桌面上的微信图标,然后立刻松开回车键。但这种方法可能无法精确控制打开的微信窗口数量,有时可能会打开过多的窗口,导致电脑卡顿甚至死机。‌‌2.使用bat命令‌:新建一个文本文档,并粘贴特定的命令,该命令会启动微信程序。......
  • 微信麦克风与CallKit不成功的解决方法
    分析原因iOS15.5+以上设备使用的巨魔2,覆盖安装商店版微信后,由于权限问题导致;解决方法①权限修改方法打开【TorllStore巨魔商店】找到安装好的微信点一下,底部提示框弹出,选择【Switchto“User”Registration】,提示框弹出,选择【Switchto“User”】,这时候你就是User权限,麦克风......
  • “苹果手机微信分身:解锁iPhone的隐藏功能“
    在智能手机高度普及的今天,微信已成为我们日常生活中不可或缺的社交工具。然而,随着工作与生活界限的日益模糊,单一微信账号已难以满足用户多样化的需求。苹果手机凭借其强大的系统功能和广泛的用户基础,推出了微信分身功能,为用户带来了前所未有的便捷与高效。本文将深入探讨苹果手......
  • vue---echarts环形图
    1、完整代码直接可以cv <template><divid="main1"></div></template><script>import*asechartsfrom'echarts';//import{mapState}from'vuex';//import{Alarm_Device}from'../utils/api.......
  • uniapp__微信小程序分享好友朋友圈的功能
    1、实现效果这个如果不写代码就是灰色的不能使用 2、api地址uniapp这是使用的api地址点击即可进入   uniapp 3、这是找到个大佬的文章很好用给大家看下uni-app小程序分享功能实现_uniapponsharetimeline-CSDN博客4、记录是方便自己学习4.1把这个建一个文件......