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代码
Mar 07 Javascript
延时重复执行函数 lLoopRun.js
May 08 Javascript
不同Jquery版本引发的问题解决
Oct 14 Javascript
Node.js编码规范
Jul 14 Javascript
JS对字符串编码的几种方式使用指南
May 14 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
require.js的用法详解
Oct 20 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
Vue触发式全局组件构建的方法
Nov 28 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
Jul 17 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
js使用心得分享
2015/01/13 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python创建数字列表的示例
2019/11/28 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
法定代表人授权委托书范文
2014/09/22 职场文书
北京导游词
2015/02/12 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers