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实现按Ctrl+Enter发送效果
Sep 18 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
js格式化时间的简单实例
Nov 27 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
babel之配置文件.babelrc入门详解
Feb 22 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
详谈js的变量提升以及使用方法
Oct 06 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
15分钟学会vue项目改造成SSR(小白教程)
Dec 17 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
PHP header函数分析详解
2011/08/06 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
python numpy 按行归一化的实例
2019/01/21 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
python 实现超级玛丽游戏
2020/11/25 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
Python爬取梨视频的示例
2021/01/29 Python
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
授权收款委托书范本
2014/10/10 职场文书
离婚案件上诉状
2015/05/23 职场文书
同事去世追悼词
2015/06/23 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
安全生产标语口号
2015/12/26 职场文书
品德与社会教学反思
2016/02/24 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL