Lorsque vous utilisez plusieurs Series de données dans le même graphique, comme expliqué dans ce tutorial Flex, vous aurez sûrement quelques problèmes si les intervalles de données sont très différents. Dans ce cas là, les points de donnée pourraient être situés dans des régions très différentes du Chart. Par exemple, une valeur contenue entre 100€ et 150€, alors qu’un autre prix fluctue entre 2€ et 2.5€. Si vous affichez les deux series de données dans un même graphique, il vous sera difficile de voir un quelconque lien entre les prix, même sur un axe logarithmique. Pour contourner ce problème, vous pouvez utiliser de multiples axes sur votre Chart pour que chaque serie de data soit positionnée de manière relative par rapport à son axe. Tous les Chart qui héritent de CartesianChart (c’est-à-dire tous sauf le Pie Chart) supportent le fait d’avoir plusieurs series sur l’axe horizontal, vertical ou les deux. Pour utiliser plusieurs axes dans un Chart, vous devez tout d’abord définir les Series du Chart et leurs axes. Par exemple, pour un graphique qui mélange des colonnes et des lignes, vous aurez un ColumnSeries et un LineSeries. Pour chacun, Vous allez aussi définir un axe vertical comme dans cet exemple de code:
<mx:series>
<mx:ColumnSeries id="cs1" dataProvider="{SMITH}" yField="close">
<mx:verticalAxis>
<mx:LinearAxis id="v1" minimum="40" maximum="50"/>
</mx:verticalAxis>
</mx:ColumnSeries>
<mx:LineSeries id="cs2" dataProvider="{DECKER}" yField="close">
<mx:verticalAxis>
<mx:LinearAxis id="v2" minimum="150" maximum="170"/>
</mx:verticalAxis>
</mx:LineSeries>
</mx:series>
Vous devrez ensuite définir les « Axis Renderer », et lier leurs propriétés « axis » aux axes des Series. Dans ce cas, on va définir deux vertical axis renderers, et les lier aux objets LinearAxis:
<mx:verticalAxisRenderers>
<mx:AxisRenderer placement="left" axis="{v1}"/>
<mx:AxisRenderer placement="left" axis="{v2}"/>
</mx:verticalAxisRenderers>
Notez que vous pouvez contrôler la position des axes en utilisant la propriété « placement » de l’AxisRenderer. Pour un axe vertical, les valeurs valides sont « left » et « right ». Pour un axe horizontal, les valeurs valides sont « top » et « bottom ». Les axes peuvent aussi être indépendants des définitions de Series. Par exemple, vous pouvez plus d’une série à un même axe. Dans ce cas, vous pouvez définir l’axe vertical comme ceci:
<mx:horizontalAxis> <mx:CategoryAxis id="h1" categoryField="date"/> <mx:horizontalAxis>
Et les lier (bind) ensuite aux Series, comme ceci:
<mx:ColumnSeries id="cs1" horizontalAxis="{h1}" dataProvider="{SMITH}" yField="close">
...
<mx:LineSeries id="cs2" horizontalAxis="{h1}" dataProvider="{DECKER}" yField="close">
Et vous pouvez lier un AxisRenderer sur ce même axe:
<mx:horizontalAxisRenderers>
<mx:AxisRenderer placement="bottom" axis="{h1}"/>
</mx:horizontalAxisRenderers>