2009-10-14 3 views
1

Я пытаюсь использовать BarChart в Flex. Я бы хотел, чтобы он заказал бары в соответствии с порядком 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

+0

, потому что есть другие вещи, которые полагаются на его первоначальный заказ. Диаграмма - единственная вещь, которая нуждается в обратном порядке. Если я назову 'data.source.reverse()', я испортил другие вещи. В качестве временного патча я создаю новый массив и назначаю ему обратный массив данных. – tomato

ответ

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

Большое спасибо за ответ. Проницательно, что вы указали, что источник находится внизу. Я попытался переключить источник на top_left, надеясь, что он изменит порядок, поставив горизонтальную axix сверху. Но это все еще не сработало. Есть ли другие способы? Реверсирование заказа источника данных не работает для меня, потому что у меня есть другие вещи, основанные на первоначальном порядке. Но thx для указания функции. Теперь я могу взломать его, чтобы вернуть новый реверсивный массив. Что касается изменения метки, я не мог придумать хороший способ изменить свою категориальную ось, как это было с линейной осью (* -1). – tomato

1

Решение прост. Создайте новый массив или массив (возможно, вам придется переопределить свойство dataProvider диаграммы), используя те же объекты и отсортируйте их.

 Смежные вопросы

  • Нет связанных вопросов^_^