flex图表隐藏数据提示 [英] flex chart hide a datatip

查看:117
本文介绍了flex图表隐藏数据提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们从多个供稿中获取数据,并且某个日期的数据可能存在也可能不存在。
因此,对于没有数据的点,我们发送NaN。

在下面的代码中,有没有办法显示datatip对于那些是空的。
我已经添加了一个datatip函数,但它确实显示了一个小的空方块,是否有可能不显示?

 <?xml version =1.0encoding =utf-8?> 
< mx:Script><![CDATA [
import mx.charts.HitData;
导入mx.collections.ArrayCollection;
$ b [bindable]
public var DS:ArrayCollection = new ArrayCollection([
{date:22-Aug-05,expense:1575.9,tax:41.87,price: 4},
{date:05年8月23日,费用:NaN,税:NaN,price:4},
{date:05年8月24日,费用:1507.1,税:42.77,价格:5},
{日期:2005年8月25日,费用:1568.8,税:48.06,价格:5},
]);
$ b $ public function dtFunc(hd:HitData):String {
if(+ hd.item.expense ==NaN)
return;
else
return hd.item.expense;
}



]]>< / mx:Script>

< mx:SolidColor id =sc1color =bluealpha =。8/>
< mx:Stroke id =s1color =blueweight =1/>


< mx:面板标题=带多轴的柱形图>
< mx:CartesianChart id =myChartshowDataTips =truedataTipFunction =dtFunc>
< mx:horizo​​ntalAxis>
< mx:CategoryAxis id =h1categoryField =date/>
< / mx:horizo​​ntalAxis>

< mx:horizo​​ntalAxisRenderers>
< mx:AxisRenderer placement =bottomaxis ={h1}/>
< / mx:horizo​​ntalAxisRenderers>

< mx:verticalAxisRenderers>
< mx:AxisRenderer placement =leftaxis ={v1}/>
< / mx:verticalAxisRenderers>

< mx:series>
< mx:ColumnSeries id =cs1
horizo​​ntalAxis ={h1}
dataProvider ={DS}
yField =费用
displayName =EXPENSE-BARCHART
filterData =false
>
< mx:verticalAxis>
< mx:LinearAxis id =v1/>
< / mx:verticalAxis>
< / mx:ColumnSeries>


displayName =Price form =step
>
< mx:verticalAxis>
< mx:LinearAxis id =v3/>
< / mx:verticalAxis>

< / mx:LineSeries>
< / mx:series>
< / mx:CartesianChart>
< / mx:面板>
< / mx:Application>


解决方案

我的猜测是您必须扩展类对于DataTip来说,检查NULL的hitData对象,杀死/停止显示的绘图。

我不认为在FLEX中通常有这样的做法。你将不得不自定义并覆盖hitData类。多么痛苦!

We get data from multiple feeds and data may or may not exist for a certain date. So, for points that have no data we send NaN.

Question: In the below code , is there a way to not show datatip for those that are null. I have added a datatip function but it does show a small empty square, is it possible to not even show that?

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

解决方案

My guess is that you would have to extend the classes for DataTip, to check for NULL hitData objects, to kill/stop the drawing of the display.

I do not think there is a way to do that normally in FLEX. You would have to customize and override the hitData class unfortunately. What a pain!!

这篇关于flex图表隐藏数据提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆