日期:2014-05-16 浏览次数:20374 次
在Ext js 中,可以绘制柱状图和条状图。
柱状图 -- Column chart, 柱子是竖直方向的。
条状图 -- Bar Chart, 柱子是水平方向的。
上面的例子一个条状图的例子。
默认状况下, Ext Js 会使用 绿色,蓝色,深红,淡红这样的顺序来配色。
如果查看Ext js 源代码, 在 chart.theme目录下的 Base.js 文件中,有以下的代码,
colors: [ "#94ae0a", "#115fa6","#a61120", "#ff8809", "#ffd13e", "#a61187", "#24ad9a", "#7c7474", "#a66111"],其实不难理解, Ext js 默认使用Base 这种主题来配置图形的颜色。
而实际开发过程中, 我们有给图形定制自己的颜色的需求, 如何实现?
总体来说,实现的方法有两种:
1. 定义新的theme ,并给出自己需要的颜色序列。(在图绘制之前)
2. 配置 chart 的series item 的 renderer.(图绘制前后都可以)
下面细部来看一下两种方式的实现方式。
1. 定义新的Theme, 例如:
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'); return String(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 还可以定义其他的一些配置: 像