2012-04-13 3 views
1

Я делаю диаграмму, где ось x должна иметь даты и имена оси y. Длительность строки больше, чем позже. Но я хочу складывать несколько баров на eachother. напримерFlex: гистограмма с гистограммой с датой по оси x и именами по оси y

Это код, который я до сих пор

<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> 

Что я получаю с этим кодом является правильной ось, но бар не разыгрываются.

Я хочу, чтобы получить график, как на this figure, но по оси X должны стоять даты.

FYI это мобильное приложение.

+0

Там нет значения установить, только две строки пытаются установить некоторые значения вместо строки – Triode

+0

У меня нет значений. просто дата, обозначающая длину строки. даты - мои ценности. Я сейчас пытаюсь преобразовать даты в числа, но я надеюсь, что будет более легкое решение – Tommyke

+0

да, вы можете преобразовать его в tio milli seconds и присвоить значения – Triode

ответ

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> 

В функции этикетки вы можете дать ярлык, что вы хотите показать на оси, надеюсь, это поможет

Смежные вопросы