2010-11-04 33 views
0

Fondamentalement, j'avoir une carte de ligne Flex et l'axe x ressemble à ceci:Comment afficher les mois regroupés par années sur l'axe horizontal pour un graphique à courbes flexibles?

---|--------|--------|--------|--------|--------|--------|--- 
November December January February March April  May 


Ceci est bien, mais je veux aussi montrer l'année que les mois appartiennent, comme celui-ci:

---|--------|--------|--------|--------|--------|--------|--- 
November December January February March April  May 
     2010   |    2011 


Mon dataprovider est un document XML qui ressemble à ceci:

<Chart> 
    <Month count="1" month="November" year="2010" /> 
    <Month count="5" month="December" year="2010" /> 
    <Month count="0" month="January" year="2011" /> 
    <Month count="10" month="February" year="2011" /> 
    <Month count="3" month="March" year="2011" /> 
    <Month count="9" month="April" year="2011" /> 
    <Month count="3" month="May"  year="2011" /> 
</Chart> 


Et voici ce que j'ai pour le contrôle de LineChart:

<mx:LineChart 
    height="100%" 
    width="100%" 
    dataProvider="{this._report.Month}"> 
    <mx:backgroundElements> 
     <mx:GridLines> 
      <mx:horizontalStroke> 
       <mx:Stroke color="0x000000" weight="1" /> 
      </mx:horizontalStroke> 
     </mx:GridLines> 
    </mx:backgroundElements> 
    <mx:horizontalAxisRenderers> 
     <mx:AxisRenderer 
      axis="{months}" 
      axisStroke="{axis}" 
      placement="bottom" 
      tickLength="5" 
      tickPlacement="outside" 
      labelRotation="45"> 
      <mx:tickStroke>{ticks}</mx:tickStroke> 
     </mx:AxisRenderer> 
    </mx:horizontalAxisRenderers> 
    <mx:verticalAxisRenderers> 
     <mx:AxisRenderer 
      axis="{countForMonths}" 
      axisStroke="{axis}" 
      placement="bottom" 
      tickLength="5" 
      tickPlacement="outside" 
      minorTickPlacement="none"> 
      <mx:tickStroke>{ticks}</mx:tickStroke> 
     </mx:AxisRenderer> 
    </mx:verticalAxisRenderers> 
    <mx:horizontalAxis> 
     <mx:CategoryAxis id="months" categoryField="@month"/> 
    </mx:horizontalAxis> 
    <mx:verticalAxis> 
     <mx:LinearAxis id="countForMonths" /> 
    </mx:verticalAxis> 
    <mx:series> 
     <mx:LineSeries 
      yField="@count" 
      displayName="Report" 
      lineStroke="{myreportstroke}"/> 
    </mx:series> 
</mx:LineChart> 


J'ai passé des heures à essayer de trouver un exemple qui fait quelque chose de similaire avec pas de chance. La documentation Flex présente plusieurs exemples montrant plusieurs axes sur l'axe des y mais aucun pour l'axe des x.

J'ai vu plusieurs autres questions postées par d'autres personnes qui veulent faire quelque chose de similaire mais la plupart d'entre eux n'ont jamais eu de réponse ou la réponse était la documentation pour plusieurs axes - que j'ai déjà fait.

J'ai trouvé this sur le site IBM pour l'un de leurs composants Flex. Cela semble indiquer qu'il est possible de formater l'axe comme je le souhaite. J'ai juste besoin de quelqu'un pour me diriger dans la bonne direction.

+0

Avez-vous réellement résolu ce problème? – zinovii

+0

Non, j'ai finalement abandonné. J'ai fini par utiliser labelFunction pour formater les étiquettes sur l'axe des x, c'est-à-dire décembre 2010, janvier 2011, février 2011, etc. Je suis certain que c'est possible et frustré qu'après des heures et des heures de recherche je n'ai pas été capable de trouver des exemples. –

Répondre

0

Problème très intéressant. Je vais y regarder. Le point de départ pour moi sera ici: http://christianyates.com/blog/flex/displaying-multiple-axes-single-series-flex-charts

+0

Merci pour la réponse. J'ai regardé rapidement le lien que vous avez fourni et cela semble prometteur. J'ai mis de côté ce problème pour le moment et je le regarderai de plus près quand j'aurai du temps libre. –

+0

Le lien semble brisé. – BrunoJCM

+0

@BrunoJCM Lien fonctionne pour moi – Ryan