您好我正在使用extjs 4.2.1应用程序,我正在使用条形图(堆叠)。在x轴上,我希望范围从-100(最小)到最大(100),相差20(majorTickSteps = 10)。
以下是代码
var store = Ext.create('Ext.data.JsonStore', {
fields: ['name', 'cost','sell'],
data: [
{'name': "2013", 'cost': -36.483395098129556, 'sell': 25.516604901870444},
{'name': "2013", 'cost': -27.483395098129556, 'sell': 8.516604901870444},
{'name': "2013", 'cost': -35.483395098129556, 'sell': 19.516604901870444},
{'name': "2013", 'cost': -25.483395098129556, 'sell': 33.516604901870444}
]
});
Ext.create('Ext.chart.Chart', {
renderTo: Ext.getBody(),
id:'chart',
width: 580,
height: 165,
animate: true,
store: store,
axes: [{
type: 'Numeric',
position: 'bottom',
fields: ['cost','sell'],
grid: true,
minimum: -100,
maximum:100
}, {
type: 'Category',
position: 'left',
fields: ['name']
}],
series: [{
type: 'bar',
axis: 'bottom',
stacked: true,
xField: 'name',
yField: ['cost','sell']
}]
});
我需要堆积条形图,其中包含我指定的最小值和最大值。我该怎么办?任何帮助将不胜感激。
答案 0 :(得分:2)
这是ExtJS中的known issue(EXTJSIV-7844)。解决方案是覆盖轴的processView
函数。
原始代码如下所示(see the docs):
processView: function() {
var me = this,
chart = me.chart,
series = chart.series.items,
i, l;
for (i = 0, l = series.length; i < l; i++) {
if (series[i].stacked) {
// Do not constrain stacked charts (bar, column, or area).
delete me.minimum;
delete me.maximum;
me.constrain = false;
break;
}
}
if (me.constrain) {
me.doConstrain();
}
}
正如您所看到的,有一些代码可以故意阻止您做您正在尝试做的事情。我不确定为什么代码存在,但一个简单的解决方法是覆盖processView
函数,使其不会这样做。
processView: function() {
var me = this;
if (me.constrain) {
me.doConstrain();
}
}
有关工作示例,请参阅this fiddle。