Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:反转LinearAxis值_Apache Flex_Charts_Inversion - Fatal编程技术网

Apache flex Flex:反转LinearAxis值

Apache flex Flex:反转LinearAxis值,apache-flex,charts,inversion,Apache Flex,Charts,Inversion,我有一个折线图,每隔几秒钟更新一次,类似于您在Windows任务管理器中看到的折线图。图表从右向左,最新数据在右边,然后向左。如何反转X轴的值,使最低值在右侧,最高值在左侧?这是一条直线 我试着将其设置为CategoryAxis并手动输入数字,但这并没有起到应有的作用(标签没有与刻度对齐) 或者,是否有方法使类别轴中的标签与刻度对齐?是否尝试反转数据提供程序的内容。是否尝试反转数据提供程序的内容。如何在图表中填充数据?如果按降序对进入图表的数据进行排序,则可以将其显示为左高右低。如何在图表中填充

我有一个折线图,每隔几秒钟更新一次,类似于您在Windows任务管理器中看到的折线图。图表从右向左,最新数据在右边,然后向左。如何反转X轴的值,使最低值在右侧,最高值在左侧?这是一条直线

我试着将其设置为CategoryAxis并手动输入数字,但这并没有起到应有的作用(标签没有与刻度对齐)


或者,是否有方法使类别轴中的标签与刻度对齐?

是否尝试反转数据提供程序的内容。

是否尝试反转数据提供程序的内容。

如何在图表中填充数据?如果按降序对进入图表的数据进行排序,则可以将其显示为左高右低。

如何在图表中填充数据?如果按降序对进入图表的数据进行排序,则可以将其显示为最高值在左侧,最低值在右侧。

因此,我对其进行了研究,但我也看不到一种直接翻转轴的方法。然而,我有一个解决方案,将工作得非常好,是相对优雅的给一个属性的省略为您这样做

请考虑这个正常的左到右线图(应该能够拷贝并粘贴到一个项目中去测试)。

要将其更改为从右到左的图表,我对时间值进行了一些反转,使其为负,然后沿一个轴绘制,该轴使用负最小值和零作为最大值。然后,我还对标签运行一个函数,使其再次为正值,以适合原始数据源

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.charts.chartClasses.IAxisRenderer;          
            import mx.collections.ArrayCollection;

            [Bindable]
            private var timeValue:ArrayCollection = new ArrayCollection( [
                { Time: 0, Value: 18 },
                { Time: 1, Value: 20 },
                { Time: 2, Value: 30 },
                { Time: 3, Value: 35 }, 
                { Time: 4, Value: 35 }, 
                { Time: 5, Value: 32 }, 
                { Time: 6, Value: 40 }, 
                { Time: 7, Value: 62 }, 
                { Time: 8, Value: 80 },
                { Time: 9, Value: 75 },
                { Time: 10, Value: 76 } ]);

            private function verticalAxisParseFunction(value : Number) : Number
            {
                return value * -1;
            }

            private function horizontalAxisRenderedLabelFunction(axisRenderer:IAxisRenderer, label:String):String
            {
                var labelAsNumber : Number = Number(label);

                if (isNaN(labelAsNumber))
                {
                    return label;
                }

                return (labelAsNumber * -1).toString();
            }

        ]]>
    </mx:Script>

    <!-- Define custom colors for use as fills. -->
    <mx:SolidColor id="sc1" color="yellow" alpha=".8"/>

    <!-- Define custom Strokes for the columns. -->
    <mx:Stroke id="s1" color="yellow" weight="2"/>

    <mx:Panel title="ColumnChart and BarChart Controls Example" 
        height="100%" width="100%" layout="horizontal">
        <mx:LineChart id="column" 
            height="100%" 
            width="100%" 
            paddingLeft="5" 
            paddingRight="5" 
            showDataTips="true" 
            dataProvider="{timeValue}" >

            <mx:horizontalAxis>
                <mx:LinearAxis id="horizontalAxis" maximum="0" minimum="-10" parseFunction="{verticalAxisParseFunction}"/>
            </mx:horizontalAxis>

            <mx:verticalAxis>
                <mx:LinearAxis id="verticalAxis" maximum="100" minimum="0" />           
            </mx:verticalAxis>

            <mx:horizontalAxisRenderers>
                <mx:AxisRenderer
                    axis="{horizontalAxis}"
                    labelFunction="{horizontalAxisRenderedLabelFunction}" />
            </mx:horizontalAxisRenderers>

            <mx:verticalAxisRenderers>
                <mx:AxisRenderer
                    axis="{verticalAxis}"
                    placement="right" />
            </mx:verticalAxisRenderers>


            <mx:series>
                <mx:LineSeries 
                    xField="Time" 
                    yField="Value" 
                    displayName="TimeValue"
                    fill="{sc1}"
                    stroke="{s1}"
                />
            </mx:series>
        </mx:LineChart>

    </mx:Panel>
</mx:Application>

所以我研究了它,我也看不到一种简单的翻转轴的方法。然而,我有一个解决方案,将工作得非常好,是相对优雅的给一个属性的省略为您这样做

请考虑这个正常的左到右线图(应该能够拷贝并粘贴到一个项目中去测试)。

要将其更改为从右到左的图表,我对时间值进行了一些反转,使其为负,然后沿一个轴绘制,该轴使用负最小值和零作为最大值。然后,我还对标签运行一个函数,使其再次为正值,以适合原始数据源

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.charts.chartClasses.IAxisRenderer;          
            import mx.collections.ArrayCollection;

            [Bindable]
            private var timeValue:ArrayCollection = new ArrayCollection( [
                { Time: 0, Value: 18 },
                { Time: 1, Value: 20 },
                { Time: 2, Value: 30 },
                { Time: 3, Value: 35 }, 
                { Time: 4, Value: 35 }, 
                { Time: 5, Value: 32 }, 
                { Time: 6, Value: 40 }, 
                { Time: 7, Value: 62 }, 
                { Time: 8, Value: 80 },
                { Time: 9, Value: 75 },
                { Time: 10, Value: 76 } ]);

            private function verticalAxisParseFunction(value : Number) : Number
            {
                return value * -1;
            }

            private function horizontalAxisRenderedLabelFunction(axisRenderer:IAxisRenderer, label:String):String
            {
                var labelAsNumber : Number = Number(label);

                if (isNaN(labelAsNumber))
                {
                    return label;
                }

                return (labelAsNumber * -1).toString();
            }

        ]]>
    </mx:Script>

    <!-- Define custom colors for use as fills. -->
    <mx:SolidColor id="sc1" color="yellow" alpha=".8"/>

    <!-- Define custom Strokes for the columns. -->
    <mx:Stroke id="s1" color="yellow" weight="2"/>

    <mx:Panel title="ColumnChart and BarChart Controls Example" 
        height="100%" width="100%" layout="horizontal">
        <mx:LineChart id="column" 
            height="100%" 
            width="100%" 
            paddingLeft="5" 
            paddingRight="5" 
            showDataTips="true" 
            dataProvider="{timeValue}" >

            <mx:horizontalAxis>
                <mx:LinearAxis id="horizontalAxis" maximum="0" minimum="-10" parseFunction="{verticalAxisParseFunction}"/>
            </mx:horizontalAxis>

            <mx:verticalAxis>
                <mx:LinearAxis id="verticalAxis" maximum="100" minimum="0" />           
            </mx:verticalAxis>

            <mx:horizontalAxisRenderers>
                <mx:AxisRenderer
                    axis="{horizontalAxis}"
                    labelFunction="{horizontalAxisRenderedLabelFunction}" />
            </mx:horizontalAxisRenderers>

            <mx:verticalAxisRenderers>
                <mx:AxisRenderer
                    axis="{verticalAxis}"
                    placement="right" />
            </mx:verticalAxisRenderers>


            <mx:series>
                <mx:LineSeries 
                    xField="Time" 
                    yField="Value" 
                    displayName="TimeValue"
                    fill="{sc1}"
                    stroke="{s1}"
                />
            </mx:series>
        </mx:LineChart>

    </mx:Panel>
</mx:Application>


我该如何。。。是否有一个选项,或者我必须手动执行?使用过滤器或只是手动执行。创建一个新的arraycollection(或任何您想要的)。然后从头到尾循环)。比如说for(vari:int=(AC.length-1);i>=0;i--){populatenewac}。希望有意义。是的,但LinearAxis没有数据提供程序。我以前已经尝试过分类轴,但它不适合折线图。啊,我只是假设所有的图表都使用DP,我实际上没有使用折线轴,如果我有时间的话,出于好奇,可能以后会看一看。我怎么。。。是否有一个选项,或者我必须手动执行?使用过滤器或只是手动执行。创建一个新的arraycollection(或任何您想要的)。然后从头到尾循环)。比如说for(vari:int=(AC.length-1);i>=0;i--){populatenewac}。希望有意义。是的,但LinearAxis没有数据提供程序。我以前已经尝试过分类轴,但它不适合折线图。啊,我只是假设所有的图表都使用DP,我实际上没有使用线性轴,如果我有时间的话,出于好奇,可能会在以后查看。不管它是分类轴,因为它使用最小值和最大值。不管它是分类轴,因为它使用最小值和最大值。太长了!可惜在赏金结束前我没有机会测试它。太长了!可惜在赏金结束前我没有机会测试。