Я работаю с Flex DateTimeAxis. У меня есть сценарий, когда DateTimeAxis иногда создает повторяющиеся месяцы на оси. Единица метки месяца генерируется на основе значения min / max, которое передается в DateTimeAxis, насколько я могу судить, она НЕ генерируется данными ряда. Другими словами, дублирование не существует в данных, переданных на диаграмму, но является частью процесса автоматической генерации меток, который DateTimeAxis выполнит при предоставлении значения min / max для оси.
Я включил упрощенный пример этой проблемы ниже. Любая помощь приветствуется.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var stockDataAC:ArrayCollection = new ArrayCollection( [
{date: new Date(2009,4), close: 41.71},
{date: new Date(2009,5),close: 42.21},
{date: new Date(2009,6), close: 42.11},
{date: new Date(2009,7), close: 42.71},
{date: new Date(2009,9), close: 42.99}
]);
[Bindable] private var min:Date = new Date(2009,4);
[Bindable] private var max:Date = new Date(2010,3);
private function formatDate(value:Date,previousValue:Date,axis:DateTimeAxis):String {
var dateLabel:String = df.format(value);
return dateLabel;
}
]]>
</mx:Script>
<mx:DateFormatter id="df" formatString="MMM YY"/>
<mx:Panel title="DateTimeAxis Example" height="100%" width="100%">
<mx:LineChart id="mychart" height="100%" width="100%"
paddingRight="5" paddingLeft="5"
showDataTips="true" dataProvider="{stockDataAC}">
<mx:horizontalAxis>
<mx:DateTimeAxis dataUnits="months" labelUnits="months" alignLabelsToUnits="false" labelFunction="formatDate" minimum="{min}" maximum="{max}"/>
</mx:horizontalAxis>
<mx:verticalAxis>
<mx:LinearAxis baseAtZero="false" />
</mx:verticalAxis>
<mx:series>
<mx:LineSeries yField="close" xField="date" displayName="AAPL"/>
</mx:series>
</mx:LineChart>
</mx:Panel>