Итак, у меня есть график (упрощенный):Автоматическое обновление аннотаций в тх: ColumnChart
<fx:Declarations>
<mx:SolidColor id="solidColor" color="0x90ee90"/>
<mx:SolidColorStroke id="solidColorStroke" color="0x90ee90"/>
</fx:Declarations>
<mx:ColumnChart id="columnChart" width="100%" height="100%">
<mx:annotationElements>
<mx:CartesianDataCanvas id="cartesianDataCanvas" includeInRanges="true"/>
</mx:annotationElements>
<mx:horizontalAxis>
<mx:DateTimeAxis id="dateTimeAxis"/>
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{dateTimeAxis}"/>
</mx:horizontalAxisRenderers>
<mx:verticalAxis>
<mx:LinearAxis id="linearAxis" baseAtZero="false"/>
</mx:verticalAxis>
<mx:verticalAxisRenderers>
<mx:AxisRenderer axis="{linearAxis}"/>
</mx:verticalAxisRenderers>
<mx:series>
<mx:ColumnSeries xField="time" yField="value" fill="{solidColor}" stroke="{solidColorStroke}"/>
</mx:series>
</mx:ColumnChart>
Время от времени в графике обновляется columnChart.dataProvider
. Мне нужно нарисовать над этой диаграммой две горизонтальные линии (для минимальных и максимальных значений) и еще что-то. Я знаю, что все это можно сделать в annotationElements
по телефону cartesianDataCanvas
.
Вопрос: В какой момент (или какое событие) следует перерисовывать аннотации, чтобы они всегда соответствовали фактическим данным?
Я попытался сделать это сразу после обновления columnChart.dataProvider
. Но это слишком рано - в dateTimeAxis
и linearAxis
не успели рассчитать новые значения min и max. Глупо вычислять их вручную.
Я могу попробовать все, и вы можете верить в то, что хотите, но иногда вам нужно прочитать документацию. http://flex.apache.org/asdoc/mx/charts/chartClasses/ChartBase.html#event:change –