2009-10-14 33 views
1

我試圖在Flex中使用BarChart。我希望它根據我給它的ArrayCollection的順序排列這些條。即索引0處的數據應該是頂部的第一個條。但是,Flex給我的確是相反的順序。即在索引0處的數據不是底部的最後一個條。Flex中的條形反轉順序BarChart

我怎麼能告訴BarChart顛倒順序,而不是顛倒我的ArrayCollection的順序?謝謝!!

這裏的代碼塊在我的腳本標籤:

[Bindable] 
private var optionsArray:ArrayCollection = new ArrayCollection([ 
     new VotingOption('Yes, it rocks!', 'yes', 5), 
     new VotingOption('Meh, it is okay!', 'ok', 10), 
     new VotingOption('No, it sucks!', 'no', 15) 
]); 

這是我的BARCHART代碼:

<mx:BarChart x="9.1" y="8" id="barchart1" width="563.0303" height="454.01514" maxBarWidth="30" 
    type="overlaid" dataProvider="{optionsArray}" showAllDataTips="true"> 

    <mx:verticalAxis> 
     <mx:CategoryAxis id="vertAxis" categoryField="optionSMSCode"/> 
    </mx:verticalAxis> 

    <mx:verticalAxisRenderers> 
     <mx:AxisRenderer axis="{vertAxis}" showLabels="false"/>  
    </mx:verticalAxisRenderers> 

    <mx:series> 
     <mx:BarSeries xField="optionResult" showDataEffect="morph"/> 
    </mx:series> 
</mx:BarChart> 
+0

作爲臨時補丁..爲什麼不只是顛倒數組排序? – ethyreal 2009-10-14 18:34:23

+0

,因爲還有其他東西依賴於它的原始順序。該圖表是唯一需要其相反順序的東西。如果我調用'data.source.reverse()',我搞砸了其他的東西。作爲臨時補丁,我正在創建一個新數組,併爲其分配反向數據數組。 – tomato 2009-10-14 21:33:56

回答

3

,你得到的輸出根據Flex如何BarCharts工作是正確的,這也是你應該期待的輸出。原點位於bottom_left,因此這些對象/列表從bottom_left開始並向上並向右繼續。
http://livedocs.adobe.com/flex/3/html/help.html?content=charts_types_03.html

我確實在視覺上理解了如何以相反的方式解釋它。假設某人按照該順序爲您提供了dataProvider/ArrayCollection,但您希望以相反的順序進行可視化。 我要麼1)

//public var data:ArrayCollection; 
data.source.reverse(); 

http://livedocs.adobe.com/flex/3/langref/Array.html

或2)
反向上使用AxisRenderer.labelFunction屬性縱軸的標籤。
Flex: Inverting LinearAxis values

+0

非常感謝您的回答。 你很有見地指出原點在bottom_left。我嘗試將原點切換到top_left,希望它能夠顛倒順序,將水平軸放在頂部。但它仍然沒有工作。還有其他方法嗎? 反轉數據源順序不適用於我,因爲我還有其他依賴原始順序的東西。但thx指出功能。現在我可以破解它返回一個新的反向數組。 至於扭轉標籤,我想不出一個好方法來扭轉我的分類軸,就像他們對線性軸(* -1)所做的那樣。 – tomato 2009-10-14 21:18:47

1

的解決方案是簡單的。使用相同的對象創建新的數組或集合(您可能必須重寫圖表的dataProvider屬性)並對它們進行排序。