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实时监听文本框状态的方法
Apr 26 Javascript
JS通过ajax动态读取xml文件内容的方法
Mar 24 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
JS数组扁平化(flat)方法总结详解
Jun 24 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
对于Python装饰器使用的一些建议
2015/06/03 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
python实现贪吃蛇小游戏
2020/03/21 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
文明宿舍获奖感言
2014/02/07 职场文书
尊师重教演讲稿
2014/09/04 职场文书
九一八事变演讲稿
2014/09/05 职场文书
村委会贫困证明范文
2014/09/21 职场文书
会计工作检讨书
2015/02/19 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
简述Java中throw-throws异常抛出
2021/08/07 Java/Android