Целочисленная ось диаграммы Extjs
Может кто-то знает, как отформатировать оси диаграммы extjs в целое число. Числовая ось также дает десятичные значения. Я хочу только целочисленные значения по оси.
4 ответа
Определите ваш минимум и максимум, затем добавьте majorTickSteps с вашим самым большим значением оси в вашем массиве данных минус один, чтобы он был на один меньше вашего максимума
спасибо @bittercoder за комментарий majorTickSteps к Sencha ExtJs 4.1.3
axes: [{
type: 'Numeric',
position: 'left',
fields: ['data1', 'data2', 'data3'],
title: 'Number of Hits',
grid: {
odd: {
opacity: 1,
fill: '#ddd',
stroke: '#bbb',
'stroke-width': 1
}
},
minimum: 0,
maximum: 10,
majorTickSteps: 9 // one less than max
}, {
type: 'Category',
position: 'bottom',
fields: ['name'],
title: 'Month of the Year',
grid: true,
label: {
rotate: {
degrees: 315
}
}
}]
В вашей модели установите для типов полей значение int, и оно будет отбрасывать десятичные дроби.
Ext.define('MyModel', {
extend: 'Ext.data.Model',
fields: [
{
name: 'Foo',
type: 'int'
},
{
name: 'Bar',
type: 'int'
}
]
});
Я столкнулся с подобной проблемой.
yAxis: new Ext.chart.NumericAxis({
displayName: 'Visits',
labelRenderer: function(v) {
// return a value only if it is an integer
if(v.toString().indexOf(".") === -1){
return v;
}
}
})
Это сработало для меня
Вы можете использовать функцию визуализации меток, когда определяете ось, чтобы сделать это
axes: [{
type: 'Numeric',
position: 'left',
grid: true,
fields: ['data1', 'data2'],
label: {
renderer: function (v) {
return v.toFixed(0);
}
}
},
{ ... }
]
Вы можете делать все что угодно со значениями оси, когда у вас есть v (v - значение метки). В случае выше .toFixed(0) округляет до ближайшего целого числа.