2012-04-13 19 views
1

Ich mache ein Diagramm, bei dem die X-Achse Daten und Y-Achsennamen haben muss. Die Länge der Leiste ist länger, wenn das Datum später ist. Aber ich möchte mehrere Balken übereinander stapeln. zum BeispielFlex: gestapeltes Balkendiagramm mit Datum als X-Achse und Namen als Y-Achse

Dies ist der Code, den ich

<fx:Script> 
    <![CDATA[ 

     import mx.collections.ArrayCollection; 

     [Bindable] 
     private var medicines:ArrayCollection = new ArrayCollection([ 
      {name:"pil1", date:"05/01/2008"}, 
      {name:"pil2", date:"06/01/2008"}, 
      {name:"pil3", date:"07/01/2008"}, 
     ]); 
    ]]> 
</fx:Script> 



<mx:BarChart id="myChart" width="758" height="448" dataProvider="{medicines}" showDataTips="true"> 

    <mx:verticalAxis> 
     <mx:CategoryAxis categoryField="name"/> 
    </mx:verticalAxis> 

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

    <mx:series> 

     <mx:BarSet type="stacked"> 
      <mx:BarSeries xField="date"/> 
      <mx:BarSeries xField="date"/> 
     </mx:BarSet> 
    </mx:series> 

</mx:BarChart> 

Was ich mit diesem Code so weit habe bekommen, sind die richtigen Achsen, sondern eine Bar gezogen nicht zu werden.

Ich möchte ein Diagramm wie auf this figure erhalten, aber auf der X-Achse sollte es stehende Daten geben.

FYI es ist eine mobile Anwendung.

+0

Es gibt keine Wert hilft, ist Sie setzen, versuchen Sie nur zwei Strings einige Werte statt Zeichenfolge zu setzen – Triode

+0

Ich habe keine Werte. nur ein Datum, das die Länge der Bar markiert. Die Daten sind meine Werte. Ich versuche jetzt, die Daten in Zahlen zu konvertieren, aber ich hoffe, es wird eine einfachere Lösung geben – Tommyke

+0

Ja, Sie können es in Millisekunden konvertieren und die Werte zuweisen – Triode

Antwort

0
<fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 

      [Bindable] 
      private var medicines:ArrayCollection = new ArrayCollection([ 
       {name:"pil1", date:new Date(2008, 5, 1).time}, 
       {name:"pil2", date:new Date(2008, 6, 1).time}, 
       {name:"pil3", date:new Date(2008, 7, 1).time}, 
      ]); 

      protected function application3_creationCompleteHandler(event:FlexEvent):void 
      { 
       // TODO Auto-generated method stub 
      } 

      private function getLabel(catValue:*, prevCatValue:*, axis:*, catItem:*):String 
      { 

       return "Your date String"; 
      } 

     ]]> 
    </fx:Script> 



    <mx:BarChart id="myChart" width="758" height="448" dataProvider="{medicines}" showDataTips="true"> 

     <mx:verticalAxis> 
      <mx:CategoryAxis categoryField="name"/> 
     </mx:verticalAxis> 

     <mx:horizontalAxis> 
      <mx:CategoryAxis categoryField="date" dataProvider="{medicines}" labelFunction="{getLabel}"/> 
     </mx:horizontalAxis> 

     <mx:series> 

      <mx:BarSet type="stacked"> 
       <mx:BarSeries xField="date"/> 
       <mx:BarSeries xField="date"/> 
      </mx:BarSet> 
     </mx:series> 

    </mx:BarChart> 



</s:Application> 

In der Label-Funktion können Sie das Etikett geben können, was Sie in der Achse zeigen wollen, hoffen, dass diese