微信小程序(十九)- 饼状图 FundCharts

339 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

本次系列文章参与八月的更文活动,记录一个微信小程序从零到有的开发过程。本文为本系列第十九篇:使用FundCharts绘制饼状图

本项目涉及生成学生学习过程产生的周报页面,需要绘制饼状图。

方案选择

考虑到不造轮子且尽可能引入轻量级组件库,于是选用了FundCharts这一组组件库,对于有canvas开发经验的人来说,也更方便的通过对实例的二次绘制从而实现定制化开发。

FundCharts简介

FundCharts是一款轻量级canvas数据可视化组件库,可以在小程序端/web端或服务端node.js运行。可以绘制折线图,饼状图,柱状图等等。

特性:重图形,轻量级,兼容好

官方文档

源码

需求简述:

绘制一环形饼状图,当右侧选择对应的区域快时,左侧的饼状图需要旋转到左侧中间位置。

image.png

image.png

安装

npm install fundcharts --save

初始化绘制图形

在相应页面引入饼状图

import { pie } from 'fundcharts'

初始化

<canvas canvas-id="chart"  style="width: 130px;"></canvas>
onLoad () {
 const PieChart = pie;
    chart = new PieChart({
      id: 'chart',
      datas: data,
      colors: [
        "#4a89fe",
        "#21beff",
        "#21ffd8",
        "#ffe221",
        "#ffc321",
        "#fcaa0b",
        "#ff6263",
        "#f84678",
      ],  //饼状图各区域颜色(六位十六进制)
      radius:50,//饼图直径,默认取画布高度height/20 - 20
      origin:{x:55,y:70}, //圆心坐标{x: 水平坐标, y: 垂直坐标} 
      hoverRate:1.2 //交互高亮区域半径
     });
    chart.init();
}

image.png

image.png

业务功能:旋转角度

FundCharts提供了一个可以配置起始角度的参数,因此只需要在右侧选择到对应区块时,改变饼状图的起始角度即可。可以使用FundCharts提供的update参数。具体业务逻辑不详述。

image.png

chart.update({
  widthRates: temp,  //设置对应区块半径扩大
  startAngle:-((90-this.data.rotateDeg)/180)* Math.PI  //修改旋转角度
})

遇到的坑

在真机调试的时候,发现了bug:canvas元素悬浮,不随父组件滚动。

经上网查找,发现时自己的最外层标签加了overflow的属性。去掉即可。

还有其他情况也会产生此bug,具体可参考文章

blog.csdn.net/xd_yangxiao…