用 canvs 实现 图表绘制

实现饼图 柱状图 嵌套柱状图

效果图

在这里插入图片描述

知识点

  1. canvs 文本 线 圆 弧度 矩形 绘制 填充
  2. js 部分 原型 组合 继承 实现思路
  1. MyChart 原型 用于 被继承 , 原型上有以下方法 extend 属性继承 drawGrid 绘制网格 ,drawCoordinate >>坐标系 randomColor 随机颜色 drawDescription 色块描述
    2 . PieChart \ BarChart 继承 MyChart 饼图 需计算圆心 柱状图 以 坐标原点 计算 数据矩形相对位置 默认 绘制坐标系

js 详细分步实现

1 数据参数 vanvasid, 网格数量 grid 默认20 , drawGrid 是否绘制网格 ,drawDescription 是否绘制 色块描述 drawCoordinate 是否绘制坐标系 data 数据结构见下
 window.onload = function(){
        var data = [
            {title:'小于20岁', value:15,},
            {title:'20~30岁', value:50},
            {title:'30~60岁', value:20},
            {title:'大于60岁', value:6},
        ]
        var data1 = [
            {title:'小于20岁',data:[{title:'男',value:'10'},{title:'女',value:'6'}]},
            {title:'20~30岁',data:[{title:'男',value:'15'},{title:'女',value:'20'}]},
            {title:'30~60岁',data:[{title:'男',value:'20'},{title:'女',value:'18'}]},
            {title:'大于60岁',data:[{title:'男',value:'5'},{title:'女',value:'3'}]},
        ]
        var pieChart = new PieChart({
            id:'#cvs1',
            grid: 40,
            drawGrid:true,
            drawDescription:true,
            data:data
        })
        var barChart = new BarChart({
            id:'#cvs2',
            drawDescription:true,
            data:data
        })
        var barChart2 = new BarChart({
            id:'#cvs3',
            drawGrid:true,            
            drawDescription:true,            
            data:data1
        })
    }
2 MyChart
// 图表类 用于继承
    var MyChart = function() {
    }
    // 属性继承
    MyChart.prototype.extend = function(options){
        this.data = options.data || null
        this.ctx  =  document.querySelector(options.id).getContext('2d') 
        this.cwidth = this.ctx.canvas.width 
        this.cheight = this.ctx.canvas.height
        this.gridN = options.grid || 20 // 网格数量
        // 网格大小
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值