2010-02-18 117 views
2

我创建使用纯AS3 Flex中线型图。我现在需要将其转换为动态多轴图表。我的意思是动态的,就是我可以在运行时以编程方式在verticalaxisrenderer数组中添加或移除axisrenderer。看来我可以通过简单地执行此操作在运行时除去axisrenderers:,动态弯曲verticalaxisrenderers

verticalAxisRenderers = verticalAxisRenderers.splice(指数,1);

然而,增加axisrenderers是不工作。我被这样做:

verticalAxisRenderers.push(AR2); verticalAxisRenderers = verticalAxisRenderers;

我哪里错了?请帮忙!

感谢, 音

+0

“帮助”是不是一个有用的标记... – skaffman 2010-02-18 20:11:06

回答

0

的误解是,你使用verticalAxisRenderers而不是使用系列标签。渲染器数组是独立的数组,用于存储Axis的实际渲染,如果您想更改它。实际轴对象存储在用于显示数据的系列中。

下面是一个例子:

<?xml version="1.0"?> 
     <!-- charts/MultipleAxes.mxml --> 
     <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
      <mx:Script><![CDATA[ 
      import mx.collections.ArrayCollection; 

      [Bindable] 
       public var SMITH:ArrayCollection = new ArrayCollection([ 
       {date:"22-Aug-05", close:41.87}, 
       {date:"23-Aug-05", close:45.74}, 
       {date:"24-Aug-05", close:42.77}, 
       {date:"25-Aug-05", close:48.06}, 
      ]); 

      [Bindable] 
       public var DECKER:ArrayCollection = new ArrayCollection([ 
       {date:"22-Aug-05", close:157.59}, 
       {date:"23-Aug-05", close:160.3}, 
       {date:"24-Aug-05", close:150.71}, 
       {date:"25-Aug-05", close:156.88}, 
      ]); 

      ]]></mx:Script> 

      <mx:Panel title="Column Chart With Multiple Series"> 
      <mx:ColumnChart id="myChart" 
       dataProvider="{SMITH}" 
       showDataTips="true"> 

       <mx:horizontalAxis> 
        <mx:CategoryAxis 
         dataProvider="{SMITH}" 
         categoryField="date"/> 
       </mx:horizontalAxis> 

       <mx:verticalAxisRenderers> 
        <mx:AxisRenderer placement="left" axis="{v1}"/> 
        <mx:AxisRenderer placement="right" axis="{v2}"/> 
       </mx:verticalAxisRenderers> 

       <mx:series> 
        <mx:ColumnSeries id="cs1" 
         dataProvider="{SMITH}" 
         xField="date" 
         yField="close" 
         displayName="SMITH"> 
         <mx:verticalAxis> 
          <mx:LinearAxis id="v1" minimum="40" maximum="50"/> 
         </mx:verticalAxis> 
        </mx:ColumnSeries> 
        <mx:LineSeries id="cs2" 
          dataProvider="{DECKER}" 
          xField="date" 
          yField="close" 
          displayName="DECKER"> 
         <mx:verticalAxis> 
          <mx:LinearAxis id="v2" minimum="150" maximum="170"/> 
         </mx:verticalAxis> 
        </mx:LineSeries> 
       </mx:series> 
      </mx:ColumnChart> 
      </mx:Panel> 
     </mx:Application> 

您可以在http://livedocs.adobe.com/flex/3/html/help.html?content=charts_types_12.html阅读更多关于这一点。警告:请勿使用secondAxisRenderer,因为这已被弃用。

0

什么是由verticalAxisRenderers.push(AR2)返回?它应该是数组的新长度。检查是否正在增加。如果没有,你的axisRenderer没有被添加到数组中。