Flex DateTimeAxis:控制使用的时间?

时间:2011-05-10 13:05:37

标签: flex charts flex-charting

当要求显示弹性图时,我们从外部源获得最小和最大时间,因此我们使用DateTimeAxis来显示时间(x)轴。因此,我们无法对labelUnitsinterval进行硬编码,但默认实现会留下一些需要的东西。有没有人知道帮助DateTimeAxis更有效地自动配置labelUnitsinterval的库?

在下面的示例中,它将第一个标签放在01:04,下一个标签放在01:18。什么? 01:15而下一个01:30将是用户友好的。加入interval="15",我们得到01:04和01:19 - 不是更好。

这是一个完整的例子。 (省略labelUnits这些minimummaximum会导致根本没有标签,所以我把它放进去了:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
    <mx:DateFormatter id="df" formatString="JJ:NN:SS" />
    <mx:Script>
        <![CDATA[
            private const minimum:Date = new Date( "Apr 1 2011 01:03:54 AM");
            private const maximum:Date = new Date( "Apr 1 2011 03:07:54 AM");
            private function labelFunction(item:Object,
                                           field:String,
                                           index:Number):String {
                return df.format(item as Date);
            }
        ]]>
    </mx:Script>

    <mx:CartesianChart width="600" height="200">

        <mx:horizontalAxis>
            <mx:DateTimeAxis
                minimum = "{minimum}"
                maximum = "{maximum}"
                displayLocalTime="true"
                labelFunction="labelFunction"
                labelUnits="minutes"
            />
            <!--
                interval="15"
            -->
        </mx:horizontalAxis>

    </mx:CartesianChart>

</mx:Application>

给出这个 flex screenshot http://www.morch.com/download/noindex/flex/DateTimeAxisScaling/DateTimeAxis.png

我宁愿不必重新发明轮子并根据以下内容计算labelUnitsinterval

  • 最短和最长时间
  • 图表的宽度
  • 字体大小
  • 其他什么?

所以我希望我错过了一些东西,或者是为了AutoDateTimeAxis或某些这样的实现.. ;-)你知道吗?

1 个答案:

答案 0 :(得分:1)

我遇到类似DateTimeAxis的问题,最后使用类别轴,使用自定义标签功能格式化日期标签。

如果您的范围跨越DST和非DST,则夏令时会有一个类似的错误,如果你的范围跨越DST和非DST,由于重叠中的额外/缺少小时,间隔将永远不会匹配。