1

早晨

我正在使用下面的代码在 Sencha 中创建图表

它工作正常,但是,所有列都是不同的随机颜色。那么我需要所有的颜色都是相同的。

我尝试在系列中使用fill: 'blue'and fill: '#000080'style: { fill: 'blue' } 但没有

var days30fields = new Array('name');
var days30fieldsd = new Array();
var days30fieldValues = new Object();
days30fieldValues['name'] = 'Last 30 days';
for(var xd = 1; xd<31; xd++){
    days30fields.push('day'+xd);
    days30fieldsd.push('day'+xd);
    days30fieldValues['day'+xd] = Math.floor((Math.random()*100)+1);
}

var chartb = new Ext.chart.Chart({
          renderTo : Ext.getBody(), 
          xtype: 'chart',
          itemId:'demochart',
          title: 'Sales Figures',
          animate: true,
            width : '80%',
            height : '70%',
            margin: '150 auto',
            store: {
                fields: days30fields,
                data:
                    //'name': 'Last 30 Days',
                    /*'day1': 10,
                    'day2': 12,
                    'day3': 14,
                    'day4': 8,
                    'day5': 13*/
                    days30fieldValues

            },
            axes: [{
                type: 'numeric',
                position: 'left',
                minimum: 0,
                renderer: function (value) {
                    value = value / 1000000;
                    return value.toFixed(1);
                },
                title:  'Number of orders',
                fields: days30fieldsd
            }, {
                type: 'category',
                position: 'bottom',
                title: 'Days',
                fields: 'name',

            }],
            series: [{
                highlight: true,
                type: 'column',
                stacked: true,
                xField: 'name',
                yField: days30fieldsd,

            }]
        });

在视图配置中:

items: [
    {
                xtype : 'container',
                flex: 1,
                items: [chartb]  
          },

这是一个小提琴

4

1 回答 1

6

更新

解决方案 1

series: [{
    highlight: true,
    type: 'column',           
    //stacked: true,
    xField: 'name',
    yField: days30fieldsd,
    renderer: function(sprite, record, attr, index, store){
       return Ext.apply(attr, {
          fill: 'red'
       });
    }
}]

看到这个小提琴


解决方案 2(适用于应用多种颜色)

Ext.chart.theme.Base为您的图表创建新主题并应用它。

Ext.define('Ext.chart.theme.ColumnTheme', {
    extend: 'Ext.chart.theme.Base',
    constructor: function(config) {
        this.callParent([Ext.apply({ 

           colors: ['red','green']

        }, config)]);
    }
});

ColumnTheme在图表中使用主题配置应用

    var chartb = new Ext.chart.Chart({
             renderTo : Ext.getBody(), 
             theme:'ColumnTheme',    
              xtype: 'chart',
              itemId:'demochart',
               .... same code

看到这个小提琴

于 2013-08-28T08:51:37.023 回答