登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
Ext JS开发大全
第1章 Ext JS快速入门示例[4/4]
第12章[12.10]富文本编辑器 CKEditor与Ext JS的整合
第12章[12.10.1] Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
第11章[11.6] Ext JS 自行搭建远端库的包升级版本后找不到的问题解决
[Ext JS 4] 实战之Grid, Tree Gird编辑
ext命令集
第12章[12.3] Ext JSGrid中的超链接列及其功能实现
[Ext JS]textfield添加compositionstart、compositionupdate 和compositionend _os
[Ext JS ] 动添切换字段的必填与非必填
3.1 Ext JS 组件总览
[Ext JS] Grid表格批量编辑的实现
Ext JS 快速开发工具
带触发器按钮的输入框
Ext JS的布尔对象类型处理及便捷方法
Ext JS的Object类型处理及便捷方法
ExtJS RadioGroup(单选按钮组) 使用及注意事项
Ext JS 模拟后端数据实现
ToolTip 实现全介绍
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
Ext JS应用测试概览
Sencha Studio 监视工具( Inspect Tool)
Ext JS 4 升级指南
Ext JS 如何定义公用方法(单例类 or 静态方法)
Ext JS的模块化开发(Package)
Ext3 -- Form 实例。 用来migrate file 数据到DB用的
ExtJS 3 在Tab下加入Form 实例
Extjs Grid 中给已经添加过Filter的列增加标识
Extjs 实战之 Ext.tree.TreePanel Tree无法显示
Extjs弹出框的异步执行
Grid 动态该表列( reconfigure)的性能改善
Spring Boot Ext JS准前后端框架应用的会话(Session)处理
[Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
[Ext JS 4] Extjs 之 initComponent 和 constructor的区别
[Ext JS 4] Grid 中的单元格添加Tooltip 的效果
[Ext JS 4] Grid 实战之分页功能
[Ext JS 4] Grid 组件
[Ext JS 4] MVC 应用程序框架
[Ext JS 4] MVC 应用程序框架
发布 [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
[Ext JS 4] 动态加载
[Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
[Ext JS 4] 实战之 Picker 和 Picker Field
[Ext JS 4] 实战之 带week(星期)的日期选择控件(二)
[Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
## [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
[Ext JS 4] 实战之 带week(星期)的日期选择控件
[Ext JS 4] 实战之Chart 坐标控制(单坐标,双坐标)
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
[Ext JS 4] 实战之Grid, Tree Gird 动态添加行
[Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
[Ext JS 4] 实战之Grid, Tree Gird编辑Cell
[Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
[Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项
[Ext JS 4] 实战之多选下拉单 (带checkbox)
[Ext JS 4] 实战之升级系列一[Ext jS 3-->Ext JS 4]
[Ext JS 4] 实战之将chart导出为png, jpg 格式的文件
[Ext JS 4] 实战之浏览器兼容
[Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
[Ext JS 4] 组件之图表
[Ext JS 4]后台自动产生图档
[Ext JS 4]性能优化
[Ext JS 7 ]7.5 自适应配置 - Responsive Configs
[Ext JS 7] 关联(Association)
[Ext JS 7]事件(Event)
[Ext JS 7]ClassRequire错误解决
[Ext JS 7]的开发模式
[Ext JS 7]基于NPM的开发
[Ext JS ] 动添切换字段的必填与非必填
[Ext JS4] 数据包
[Ext JS4系列]Ext JS4 入门
[Ext JS6] Grid不同列的关联编辑
[Ext JS6] ViewControllers-视图控制器
[Ext JS6]Ext.Template
[Ext JS6]Sencha Cmd
[Ext JS6]编码规范
[Ext JS6]多类型设备开发
[Ext JS6]工作区-Workspace
[Ext JS6]路由(Routing)及使用
[Ext JS6]视图模型和数据绑定
[Ext JS6实战] Ajax获取Tree Store
[Ext JS6实战] Ext.XTemplate
[Ext JS6实战]动态数据绑定
[Ext JS] Sencha Cmd命令参考之二
[Ext JS] Sencha Cmd命令参考之一
[Ext JS] Group Grid-分组网格
[Ext JS] Group Grid-分组网格
[Ext JS]嵌套Grid的实现及注意事项
[Ext JS]SimXhr.js__dc=1659315492151_65 Uncaught TypeError问题分析与解决
[Ext JS]Sencha Studio安装与快速介绍之一
[Ext JS]textfield 添加 compositionstart、compositionupdate 和 compositionend
[Ext JS]图片显示方式
[ExtJS 6]Grid分页工具栏无效问题解决
[ExtJS6]ResponsiveColumn-自适应列布局
[Extjs 4] 类系统
基于Ext JS的模块化应用框架搭建及开发
[Ext JS] 自行搭建远端库的包升级版本后找不到的问题解决-The following versions are available
[Ext JS]鼠标移入移除时弹出和关闭窗口
[Ext JS]富文本编辑器 CKEditor与Ext JS的整合
[Ext JS]可编辑列Grid的全场景开发
['Ext JS]Grid中的超链接列及其功能实现
[Ext JS]Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
[Ext JS]介绍与快速入门1
[Ext JS]实现带动态数字的图标
Spring Boot+Ext JS 实现图形验证码
Ext JS介绍与快速入门2
Ext JS开发基本环境准备与项目创建
[Ext JS]开发模式及快速测试方式
[Ext JS]多类型终端-电脑、移动端(手机、平板)
[Ext JS]基于Ext JS的MVC/MVVM架构的应用开发模式
[Ext JS]Ext JS的类与类体系
[Ext JS]Ext JS组件、容器与布局
[Ext JS]组件与容器的选择与开发
[Ext JS]Ext JS数据模型与数据封装
[Ext JS]Ext JS的控制器类型及使用
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext js]Grid行选择的多种场景和实现方式
[Ext JS]Ext JS类的继承与混合
CmsWing
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
## [Ext JS 4] 实战之Chart, Column Chart 定制颜色 ### 前言 ![](/upload/picture/2022-09-29/upload_c59c598cea94bd5b7571b449cb6181a1.png) 在Ext js 中,可以绘制柱状图和条状图。 柱状图 -- Column chart, 柱子是竖直方向的。 条状图 -- Bar Chart, 柱子是水平方向的。 上面的例子一个条状图的例子。 默认状况下, Ext Js 会使用 绿色,蓝色,深红,淡红这样的顺序来配色。 如果查看Ext js 源代码, 在 chart.theme目录下的 Base.js 文件中,有以下的代码, ```css colors: [ "#94ae0a", "#115fa6","#a61120", "#ff8809", "#ffd13e", "#a61187", "#24ad9a", "#7c7474", "#a66111"], ``` 其实不难理解, Ext js 默认使用Base 这种主题来配置图形的颜色。 而实际开发过程中, 我们有给图形定制自己的颜色的需求, 如何实现? 总体来说,实现的方法有两种: 1. 定义新的theme ,并给出自己需要的颜色序列。(在图绘制之前) 2. 配置 chart 的series item 的 renderer.(图绘制前后都可以) 下面细部来看一下两种方式的实现方式。 ### 定义新的Chart Theme 来定制图形颜色 1. 定义新的Theme, 例如: ```css var colors = ['#6E548D','#94AE0A','#FF7348','#3D96AE']; Ext.define('Ext.chart.theme.MyFancy', { extend: 'Ext.chart.theme.Base', constructor: function(config) { this.callParent([Ext.apply({ colors: colors }, config)]); } }); 这里定义了一个MyFancy 的Theme 2. 在Chart 中, 使用这个Theme var chart = Ext.create('Ext.chart.Chart',{ theme: 'MyFancy', animate: true, shadow: true, store: store, legend: { position: 'top' }, axes: [{ type: 'Numeric', position: 'left', //position: 'bottom', fields: ['buildpass', 'buildfail', 'sanitypass', 'sanityfail'], title: 'Times', grid: true, label: { renderer: function(v) { //return String(v).replace(/(.)00000$/, '.$1M'); //return String(v).replace(/(.)0000000$/, '$1'); returnString(v); } } }, { type: 'category', //position: 'left', position: 'bottom', fields: ['day'], title: 'Date' }], series: [{ //type: 'bar', type: 'column', //axis: 'bottom', //showInLegend: false, axis: 'left', gutter: 80, xField: 'day', yField: ['buildpass', 'buildfail', 'sanitypass', 'sanityfail'], label: { display: 'insideEnd', field: ['buildpass', 'buildfail', 'sanitypass', 'sanityfail'] }, stacked: true, tips: { trackMouse: true, width: 65, height: 28, renderer: function(storeItem, item) { //this.setTitle(String(item.value[1] / 1000000) + 'M'); this.setTitle(String(item.value[1])); } }, listeners:{ itemclick:{ fn:function(){alert("11");} } } }] }); ``` theme: 'MyFancy' 就是使用这个 theme 的方式。 除了颜色之外, Theme 还可以定义其他的一些配置: 像 ```css Ext.define('Ext.chart.theme.Fancy', { extend: 'Ext.chart.theme.Base', constructor: function(config) { this.callParent([Ext.apply({ axis: { stroke: baseColor }, axisLabelLeft: { fill: baseColor }, axisLabelBottom: { fill: baseColor }, axisTitleLeft: { fill: baseColor }, axisTitleBottom: { fill: baseColor }, colors: colors }, config)]); } }); ``` ### 设置Series item 的render 有的状况可能图已经绘制出来了, 使用theme 就无效了。 这里以柱状图为例。 在创建Chart 的时候, 我们设置了一些Series , 比如说一个柱状图和一个折线图, 这样Series 就有两个了。 使用 iChart.series.items[0],iChart.series.items[1] 就可以分别得到每个Series 了。 (这里的iChart 是创建出来的Chart 对象) ```css iChart.series.items[0].renderer = function(sprite, storeItem, barAttr, i, store) { barAttr.fill = colors[0]; return barAttr; }; ``` 使用以上方式就可以变换图的颜色了。 这里 i 的参数就是每个柱子的序列号(比如图有12 根柱子就是 0 到 11 了) 接下来有一个问题, 如果这个柱状图的每个柱子又有三个子柱的话(或stacked 为true, 三个柱子堆叠在一起; 或stacked 为false, 三个柱子group 方式水平), 如何设置颜色? ```css renderer: function(sprite, storeItem, barAttr, i, store) { barAttr.fill = colors[i % 3]; return barAttr; }, ``` 使用以上方式, 用3 来循环。 图的颜色改变了, 如果有Legend 的话, Legend 也要修改才能匹配的上: ```css iChart.series.items[0].getLegendColor = function(index) { return colors[0]; }; ``` ### 总结 配置 chart 的series item 的 renderer,开上去可以, 但是如果遇到有子柱 的过滤时, 就是点击legend 进行隐藏和显示的话,颜色会出现错乱, 所以还是要使用Theme的方式。 具体开发使用哪种方式, 就要根据具体的状况来对待了。
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们