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 相关文章推荐
JavaScript 动态改变图片大小
Jun 11 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
jquery实现左右无缝轮播图
Jul 31 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
Jul 06 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
vue项目中实现的微信分享功能示例
Jan 21 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
vue 数据双向绑定的实现方法
Mar 04 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代码
2008/04/09 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
Document 对象的常用方法
2009/07/31 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
Python守护线程用法实例
2017/06/23 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
numpy返回array中元素的index方法
2018/06/27 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
python开头的coding设置方法
2019/08/08 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
大学毕业通用个人的求职信
2013/12/08 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
钢琴师观后感
2015/06/12 职场文书
无线电通信名词解释
2022/02/18 无线电