2011-06-06 93 views
0

在Flex 3中,我有一個折線圖。 折線圖的我的數據提供者只包含一個項目。LineChart數據提示將不會顯示單個數據點?

當我繪製折線圖時,它繪製了點。但它不顯示數據提示。

它適用於數據提供者中存在多個項目的情況。

如何使包含單個數據項的數據提供者的折線圖顯示數據提示?

+0

顯示一些代碼。 – 2011-06-06 14:22:47

回答

0

當您只有一個點時,使用PlotSeries而不是LineSeries。數據提示你會得到一個不錯的圓點。如何做到這一點完全取決於你的數據是如何構建的 - 如果數據在分配給dataProvider後沒有改變,你可以選擇在那一刻使用哪種類型的系列。

0

試試下面的代碼, 在ActionScript,

lineSeries.setStyle("itemRenderer", new ClassFactory(mx.charts.renderers.CircleItemRenderer)); 
在MXML

<mx:LineSeries yField="Y" itemRenderer="mx.charts.renderers.CircleItemRenderer" xField="X" dataProvider="{lineDataProvider}"> 
+0

在MXML中, ** ** – Kishore 2011-06-17 12:05:31

-1

有一種變通方法,以顯示datatip。我們需要將ROLL_OVERROLL_OUT鼠標事件偵聽器添加到具有單個數據點的線序列中。

<?xml version="1.0"?> 
<!-- Simple example to demonstrate the LineChart and AreaChart controls. --> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.charts.HitData; 
      import mx.charts.renderers.*; 
      import mx.charts.series.items.LineSeriesItem; 
      import mx.collections.ArrayCollection; 

      [Bindable] 
      private var expensesAC:ArrayCollection = new ArrayCollection([ 
       { Month: "Jan", Profit: 2000 } ]); 

      private function lineseriesRollOverHandler(event:MouseEvent):void 
      { 
       linechart.showAllDataTips = true; 
      } 

      private function lineserieRollOutHandler(event:MouseEvent):void 
      { 
       linechart.showAllDataTips = false; 
      } 

      private function dataTipFunction(hitData:HitData):String 
      { 
       if(hitData && hitData.item) 
       { 
        var s:String = ""; 

        if(hitData.element is LineSeries) 
        { 

         if(expensesAC.length <=1) 
          hitData.x = 56; 

         var lsi:LineSeriesItem = hitData.chartItem as LineSeriesItem; 

         if(lsi == null) 
          return ""; 

         s += "<b>" + (hitData.element as LineSeries).displayName + "</b><br />"; 
         s += lsi.xValue + "<br />"; 
         s += lsi.yNumber; 
        } 

        return s; 
       } 

       return ""; 
      } 

     ]]> 
    </fx:Script> 

    <fx:Declarations> 
    </fx:Declarations> 

    <mx:Panel width="100%" height="100%" layout="horizontal" title="Single point LineChart Example"> 

     <mx:LineChart id="linechart" width="45%" height="100%" dataProvider="{expensesAC}" 
         paddingLeft="5" paddingRight="5" showDataTips="true" dataTipFunction="dataTipFunction"> 

      <mx:horizontalAxis> 
       <mx:CategoryAxis categoryField="Month"/> 
      </mx:horizontalAxis> 

      <mx:series> 
       <mx:LineSeries displayName="Profit" form="curve" 
           itemRenderer="mx.charts.renderers.CircleItemRenderer" 
           legendMarkerRenderer="mx.charts.renderers.BoxItemRenderer" 
           rollOut="lineserieRollOutHandler(event)" 
           rollOver="lineseriesRollOverHandler(event)" yField="Profit"/> 
      </mx:series> 
     </mx:LineChart> 

     <mx:Legend dataProvider="{linechart}"/> 

    </mx:Panel> 
</s:Application>