2009-10-14 6 views
1

J'essaie d'utiliser un BarChart dans Flex. Je voudrais qu'il ordonne les barres selon l'ordre de l'ArrayCollection je l'ai nourri. c'est-à-dire que les données à l'index 0 devraient être la première barre en haut. Cependant, Flex me donne exactement l'ordre inverse. c'est-à-dire que les données à l'index 0 ne sont pas la dernière barre en bas.Ordre inverse des barres dans un Flex BarChart

Comment puis-je demander au BarChart d'inverser l'ordre autre que d'inverser l'ordre de mon ArrayCollection? Merci!!

est ici le bloc de code dans mon balise script:

[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) 
]); 

Et voici mon code 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

en tant que patch temporaire ... pourquoi ne pas simplement inverser le tri de la matrice? – ethyreal

+0

car il y a d'autres choses qui dépendent de sa commande d'origine. Le tableau est la seule chose qui a besoin de son ordre inverse. Si j'appelle 'data.source.reverse()', je bousille d'autres choses. En tant que correctif temporaire, je crée un nouveau tableau et lui affecte le tableau de données inversé. – tomato

Répondre

3

La sortie que vous obtenez est correct en fonction de travail Flex BarCharts, et C'est aussi la sortie à laquelle vous devriez vous attendre. L'origine est à la bottom_left, et en tant que tels objets/listes commencent à la bottom_left et continuent vers l'extérieur vers le haut et vers la droite.
http://livedocs.adobe.com/flex/3/html/help.html?content=charts_types_03.html

Je comprends visuellement comment vous interpréteriez l'inverse. Alors disons que quelqu'un vous a donné cette dataProvider/ArrayCollection dans cet ordre, mais que vous vouliez visualiser dans l'ordre inverse. I serait soit 1)

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

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

ou 2)
inverser les étiquettes sur l'axe vertical en utilisant la propriété AxisRenderer.labelFunction.
Flex: Inverting LinearAxis values

+0

Merci beaucoup pour la réponse. Il est intéressant de noter que l'origine est à bottom_left. J'ai essayé de changer l'origine en top_left, en espérant que cela inverserait l'ordre, en plaçant l'axix horizontal sur le dessus. Mais ça n'a toujours pas marché. Y a-t-il d'autres moyens? Inverser l'ordre de la source de données ne fonctionne pas pour moi, car j'ai d'autres choses qui dépendent de l'ordre original. Mais merci de pointer la fonction. Maintenant, je peux le pirater pour retourner un nouveau tableau inversé. En ce qui concerne l'inversion de l'étiquette, je n'ai pas trouvé de moyen d'inverser mon axe catégoriel, comme c'était le cas avec l'axe linéaire (* -1). – tomato

1

La solution est simple. Créez un nouveau tableau ou collection de tableaux (vous devrez peut-être remplacer la propriété dataProvider du graphique) en utilisant les mêmes objets et en les triant.

Questions connexes