سؤال

نحصل على بيانات من خلاصات متعددة وقد تكون البيانات أو غير موجودة لتاريخ معين. لذلك ، للحصول على النقاط التي ليس لها بيانات نرسل NAN.

سؤال: في الرمز أدناه ، هل هناك طريقة لعدم إظهار datatip لأولئك الذين هم لاغية. لقد أضفت وظيفة datatip لكنها تُظهر مربعًا صغيرًا صغيرًا ، هل من الممكن حتى إظهار ذلك؟

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:Script><![CDATA[
    import mx.charts.HitData;
     import mx.collections.ArrayCollection;

     [Bindable]
      public var DS:ArrayCollection = new ArrayCollection([
        {date:"22-Aug-05", expense:1575.9, tax:41.87, price: 4},
        {date:"23-Aug-05", expense:NaN, tax:NaN,price: 4},
        {date:"24-Aug-05", expense:1507.1, tax:42.77,price:5 },
        {date:"25-Aug-05", expense:1568.8 ,tax:48.06, price:5},
     ]);

     public function dtFunc(hd:HitData):String {
        if(""+hd.item.expense == "NaN")
            return "";
        else 
            return hd.item.expense ;
     }



  ]]></mx:Script>

    <mx:SolidColor id="sc1" color="blue" alpha=".8"/>
    <mx:Stroke id="s1" color="blue" weight="1"/>


  <mx:Panel title="Column Chart With Multiple Axes">
     <mx:CartesianChart id="myChart" showDataTips="true" dataTipFunction="dtFunc">
        <mx:horizontalAxis>
           <mx:CategoryAxis id="h1" categoryField="date"/>
        </mx:horizontalAxis>

        <mx:horizontalAxisRenderers>
            <mx:AxisRenderer placement="bottom" axis="{h1}"/>
        </mx:horizontalAxisRenderers>

        <mx:verticalAxisRenderers>
            <mx:AxisRenderer placement="left" axis="{v1}"/>
            <mx:AxisRenderer placement="left" axis="{v3}" visible="false"/>
        </mx:verticalAxisRenderers>

        <mx:series>
           <mx:ColumnSeries id="cs1" 
                horizontalAxis="{h1}" 
                dataProvider="{DS}" 
                yField="expense" 
                displayName="EXPENSE-BARCHART"
                filterData="false"
            >
                <mx:verticalAxis>
                   <mx:LinearAxis id="v1" />
                </mx:verticalAxis>           
           </mx:ColumnSeries>           


           <mx:LineSeries id="cs3" horizontalAxis="{h1}" dataProvider="{DS}" yField="price" 
            displayName="Price" form="step"
            >
                <mx:verticalAxis>
                    <mx:LinearAxis id="v3"   />           
                </mx:verticalAxis>

           </mx:LineSeries>
        </mx:series>
     </mx:CartesianChart>
     <mx:Legend dataProvider="{myChart}"/>
  </mx:Panel>
</mx:Application>
هل كانت مفيدة؟

المحلول

أظن أنه سيتعين عليك تمديد الفصول الدراسية لـ Datatip ، للتحقق من وجود كائنات Null Hitdata ، لقتل/إيقاف رسم الشاشة.

لا أعتقد أن هناك طريقة للقيام بذلك بشكل طبيعي في Flex. سيكون عليك تخصيص وتجاوز فئة Hitdata للأسف. ياله من ألم!!

نصائح أخرى

شكرا لك ديفترون ، http://www.flexdeveloper.eu/forums/flex-charting/disable-datatip-but-keep-mouse-event-line-chart/

يصف الحل بشكل صحيح.

يمكنك أيضا ضبط myChart.setStyle("dataTipRenderer",mx.skins.ProgrammaticSkin); للتخلص من عرض datatips.

قضيتان صغيرتان ،

  • نحتاج إلى معرفة قيمة الحافة قبل مسح الرسومات.
  • لا يمكن إزالة الخط الذي يربط نقطة البيانات بالمستطيل الذي يعرض البيانات. لكن هذا جيد بما يكفي بالنسبة لي.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top