الرسم البياني المرن إخفاء datatip
-
28-09-2019 - |
سؤال
نحصل على بيانات من خلاصات متعددة وقد تكون البيانات أو غير موجودة لتاريخ معين. لذلك ، للحصول على النقاط التي ليس لها بيانات نرسل 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.
قضيتان صغيرتان ،
- نحتاج إلى معرفة قيمة الحافة قبل مسح الرسومات.
- لا يمكن إزالة الخط الذي يربط نقطة البيانات بالمستطيل الذي يعرض البيانات. لكن هذا جيد بما يكفي بالنسبة لي.