Из того, что я смог найти, вы можете использовать метод
(...),
series: [style: {colors: arrayBuiltFromStore }],
(...)
, если вы создаете круговую диаграмму (или другую диаграмму с атрибутом series.colors), и она прекрасно работает.
Если вы используете тип диаграммы, которая не поддерживает series.colors ... она становится немного более запутанной.Я обнаружил, что использование метода рендерера работает довольно хорошо.Единственная проблема с этим методом (который я вижу сразу) состоит в том, что он не меняет цвета в легенде.Потребовалось бы дополнительное редактирование, чтобы увидеть, можно ли это вытащить из магазина
Если вы выясните проблему с легендой, дайте мне знать, но я надеюсь, что это поможет.
Примечание. Не все переменные, используемые в приведенном ниже сценарии, заполняются в сценарии.
function myColorer(rec) {
var aFiller = new Array('#0000FF','#31CD31','#FFFF00','#FF0000');
return aFiller[rec];
}
Ext.onReady(function() {
var sDataStore = new Ext.data.JsonStore(sPathToDataStore);
chart = new Ext.chart.Chart({
renderTo: document.getElementById('test-graph'),
width: 800,
height: 600,
animate: true,
store: sDataStore,
legend: {
position: 'right',
isVertical: true,
},
axes: [{
type: 'Numeric',
grid: true,
position: 'left',
fields: ['field1','field2','field3','field4'],
title: 'Title Here',
grid: {
odd: {
opacity: 1,
fill: '#ddd',
stroke: '#bbb',
'stroke-width': 1
}
},
minimum: 0,
adjustMinimumByMajorUnit: 0
}, {
type: 'Category',
position: 'bottom',
fields: label1,
title: sXAxisLabel,
grid: true,
}],
series: [{
renderer: function(sprite, record, curAttr, index, store) {
var color = myColorer(index);
return Ext.apply(curAttr, {
fill: color
});
},
type: 'area',
highlight: false,
axis: 'left',
xField: label1,
yField: ['field1','field2','field3','field4'],
style: {
opacity: 0.93
}
}]
});
});