LinearAxis高级应用

Flex中的DateTimeAxis确实很强大,不过它要求数据很有规律,比如每天/小时取一条数据,因此适合用在股票图表中。但对没有规律的交易数据,如债券、远期,用DateTimeAxis生成的轴标签始终是均匀分布的,很多轴标签根本没什么意义,这是因为DateTimeAxis类沿图表轴在最大值和最小值之间均匀地映射时间值,因此难免轴标签会找不到对应的图表项目。而LinearAxis均匀映射数值,可以避免这种情况的发生。

点击此处查看该实例最终效果,点击此处下载该实例的源码。

在AreaChartEx.mxml中,我们将AreaSeries的属性xField设置为index,这是因为LinearAxis中横坐标必须是数值。当然最终会横坐标上会显示日期标签,因此我们使用labelFunction根据index获取对应的日期。不同的日期范围对应不同的日期格式,当日期范围改变时,日期标签相应改变,因此我们在DateTimeAxisEx.mxml中自定义了span属性,当日期范围改变时,会派发axisChange事件通知轴改变标签。值得注意地是,在同一日期格式下可能重复显示日期标签。因此我们完全覆写了buildLabelCache()方法。所有的日期标签是用labelCache数组来管理的,只有当前标签与下一日期标签和上一标签的文本不相同时,才显示出来。filterLabels()方法用来移除间隔太近容易重叠的标签,同时保证首尾标签图表两端。

发表评论