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中处理与当前时间间隔的函数代码
May 23 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
AngularJS中的模块详解
Jan 29 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
Apr 23 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
html中select语句读取mysql表中内容
2006/10/09 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python切片知识解析
2016/03/06 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python用模块pytz来转换时区
2016/08/19 Python
使用python进行拆分大文件的方法
2018/12/10 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
解决python flask中config配置管理的问题
2019/07/26 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
python实现按日期归档文件
2021/01/30 Python
蛋白质世界:Protein World
2017/11/23 全球购物
优秀毕业生推荐信范文
2014/03/07 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android