extjs图形绘制之饼图实现方法分析


Posted in Javascript onMarch 06, 2020

本文实例讲述了extjs图形绘制之饼图实现方法。分享给大家供大家参考,具体如下:

这篇文章将介绍extjs中自带的饼图。

extjs图形绘制之饼图实现方法分析

代码如下:

Ext.define('ChartPieTest', {
  extend: 'Ext.panel.Panel',
  autoScroll : true,
  initComponent: function () {
    var me = this;
    me.store = me.createStore();
    me.grid = me.getGridPanel();
    me.mainPanel = Ext.create('Ext.panel.Panel',{
      layout:'fit',
      items:[me.grid],
    });
 
    Ext.apply(me,{
      layout:'fit',
      items:[me.mainPanel]
    });
    me.callParent();
    me.mainPanel.down('chart').on('cellclick', function(grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
      me.onCellClick(cellIndex, record);
    });
  },
 
  getGridPanel:function(){
    var me = this;
    return {
      xtype:'chart',
      insetPadding: 40,
      animate : true,// 是否支持动态数据变化
      legend: {// 图例
        position: "right",
        spacing: 12,
        padding: 5,
        font: {
          name: 'Tahoma',
          color: '#3366FF',
          size: 12,
          bold: true
        }
      },
      store:me.store,
      //axes:me.createAxes(),
      series:me.createSeries(),
    }
  },
  createStore: function () {
    var me = this;
    return Ext.create('Ext.data.JsonStore', {
      //从后端请求数据
     /* fields: [
        {name: 'id', mapping: 'id'},
        {name:'statTime',mapping:'statTime',type:'date',dateFormat:'time'},
        'activeCount', 'effectiveCount','effectiveProportion',
      ],
      proxy: {
        type: 'ajax',
        url: ctx+'/mvc/com/analyze/tblVwMonthUserStat',
        reader: {
          type: 'json',
          root: 'root',
          totalProperty: 'totalProperty'
        }
      },
      listeners: {
        'beforeload': function (store, operation, eOpts) {
          store.proxy.extraParams.selectYear = me.selectYear
        }
      },*/
     //自己模拟数据
      fields: ['name', 'data'],
      data: [
        { 'name': '中年人',  'data': 10 },
        { 'name': '婴儿',  'data': 7 },
        { 'name': '老年人', 'data': 5 },
        { 'name': '小孩', 'data': 2 },
        { 'name': '青少年', 'data': 27 }
      ],
      autoLoad: true
    });
  },
  
  createSeries: function () {
    var me = this;
    var columns = [
      {
        type: 'pie',
        angleField: 'data',
        showInLegend: true,
        tips: {
          trackMouse: true,
          width: 140,
          height: 40,
          renderer: function(storeItem, item) {
            // calculate and display percentage on hover
            var total = 0;
            me.store.each(function(rec) {
              total += rec.get('data');
            });
            this.setTitle(storeItem.get('name') + ': ' + Math.round(storeItem.get('data') / total * 100) + '%');
          }
        },
        highlight: {
          segment: {
            margin: 5
          }
        },
        label: {
          field: 'name',
          display: 'rotate',
          contrast: true,
          font: '18px Arial'
        }
      },
 
    ];
    return columns;
  }
 
});

注:

1.上面中的createStore是创建饼图所需要的数据的--store。

2.上面中的legend 显示的右边的图例(表明哪块代表什么数据),legend中的position属性可以调节图例的位置。其中有‘left'、‘right',‘bottom'、‘top'分别代表左右下上位置。

3.showInLegend是bool值,为false的时候不显示上面的图例。

4.tips这里是当鼠标放在饼图上的时候显示的提示性文字,其中的renderer方法中可设置提示哪些内容。

5.label 设置饼图上显示文字的一些属性。其中的display属性决定文字在饼图中位置,共有‘outside'、‘rotate'两种方式,前者表示文字显示在图表的外边,后者文字显示在图表的里边。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用js实现的页面关键字密度查询代码
Dec 27 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
Jquery简单分页实现方法
Jul 24 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
JavaScript 继承详解(五)
Oct 11 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
简单实现js倒计时功能
Feb 13 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
Aug 19 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
使用JS前端技术实现静态图片局部流动效果
Aug 05 Javascript
extjs图表绘制之条形图实现方法分析
Mar 06 #Javascript
Node.js中文件系统fs模块的使用及常用接口
Mar 06 #Javascript
JavaScript中的this/call/apply/bind的使用及区别
Mar 06 #Javascript
JS实现网页端猜数字小游戏
Mar 06 #Javascript
extjs4图表绘制之折线图实现方法分析
Mar 06 #Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 #Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 #Javascript
You might like
PHP中的正规表达式(一)
2006/10/09 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
python解析xml文件操作实例
2014/10/05 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
技术副厂长岗位职责
2013/12/26 职场文书
优秀员工演讲稿
2014/05/19 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
毕业生评语大全
2015/01/04 职场文书
担保书格式
2015/01/20 职场文书
公司市场部岗位职责
2015/04/15 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers