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 相关文章推荐
jQuery下的几个你可能没用过的功能
Aug 29 Javascript
JavaScript实现存储HTML字符串示例
Apr 21 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 Javascript
快速入门Vue
Dec 19 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
利用JavaScript将Excel转换为JSON示例代码
Jun 14 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
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 数组的一个悲剧?
2011/05/11 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
php生成无限栏目树
2017/03/16 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
JavaScript 常用函数
2009/12/30 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
Python如何定义一个函数
2015/09/01 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
创先争优标语
2014/06/27 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
Python 如何安装Selenium
2021/05/06 Python
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python