2013-05-21 40 views
0

我有如下所示的一組數據:如何使用在的filterFunction的ColumnSeries

 [Bindable] 
    public var Loc:ArrayCollection = new ArrayCollection([ 
     {date:"2002", close:41.87, loc: "Location 01"}, 
     {date:"2003", close:45.74, loc: "Location 01"}, 
     {date:"2004", close:42.77, loc: "Location 01"}, 
     {date:"2005", close:48.06, loc: "Location 01"}, 
     {date:"2006", close:48.06, loc: "Location 01"}, 
     {date:"2002", close:157.59, loc: "Location 02"}, 
     {date:"2003", close:160.3, loc: "Location 02"}, 
     {date:"2004", close:150.71, loc: "Location 02"}, 
     {date:"2005", close:156.88, loc: "Location 02"}, 
    ]); 

和我想創建類似下面的圖表,其中每個位置被顯示在不同的顏色和每年分組: enter image description here

我在想,我必須使用「MX:的ColumnSeries」標籤,並使用其「的filterFunction」屬性來定義如何過濾數據的每個位置作爲一個獨立的系列,但我不不知道該怎麼做。 Anyboy是否有任何建議或示例代碼來創建此類圖表? 謝謝

回答

1

下面的例子:

private function filterSeries1(cache:Array):Array 
{ 
    var filteredCache:Array = []; 
    for (var i:int = 0; i < cache.length; i++) 
    { 
     var item:ColumnSeriesItem = ColumnSeriesItem(cache[i]); 
     if(item.item.loc == "Location 01") 
      filteredCache.push(item); 
    } 
    return filteredCache; 
} 

private function filterSeries2(cache:Array):Array 
{ 
    var filteredCache:Array = []; 
    for (var i:int = 0; i < cache.length; i++) 
    { 
     var item:ColumnSeriesItem = ColumnSeriesItem(cache[i]); 
     if(item.item.loc == "Location 02") 
      filteredCache.push(item); 
    } 
    return filteredCache; 
} 

和:

<mx:series> 
    <mx:ColumnSeries yField="close" xField="date" 
        labelPosition="outside" 
        filterFunction="{filterSeries1}"/> 
    <mx:ColumnSeries yField="close" xField="date" 
        labelPosition="outside" 
        filterFunction="{filterSeries2}"/> 
</mx:series> 
相關問題