【问题标题】:flex chart hide a datatip弹性图表隐藏数据提示
【发布时间】:2011-04-21 20:33:44
【问题描述】:

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

问题: 在下面的代码中,有没有办法不显示那些为空的数据提示。 我添加了一个 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>

【问题讨论】:

  • 我找到了一个链接,help.adobe.com/en_US/flex/using/…。搜索 aspexamples.adobe.com/chart_examples/stocks.aspx,“查看运行示例”下方有一个按钮。该示例具有“无数据”条件,并且没有出现数据提示。问题:该示例使用 DateTimeAxis 而我不能使用它,因为有时我的 x 轴具有 jan 、 feb 、 mar 等值。那么,DateTimeAxis 中的什么不允许数据提示条件?
  • 我想说我的 x 轴的值不是日期,因此我不能使用 DateTimeAxis 。
  • 无法弄清楚如何将这个问题链接到另一个问题,但我在stackoverflow.com/questions/884123/… 找到了我的答案,尽管我首先找到了这个答案。简短的回答是该系列中有一个名为“interactive”的属性可以完全按照需要控制此功能。

标签: apache-flex datatipfunction


【解决方案1】:

我的猜测是您必须扩展 DataTip 的类,以检查 NULL hitData 对象,以终止/停止显示的绘制。

我认为在 FLEX 中通常没有办法做到这一点。不幸的是,您将不得不自定义和覆盖 hitData 类。多么痛苦!

【讨论】:

  • 谢谢你会检查出来,但上面列出的一个例子有这个开箱即用的 DateTimeAxis ,不幸的是我的 x 轴不是日期时间。日期时间轴中的某些东西有助于实现这一点,需要弄清楚内部结构。
  • 我不确定这是否对您有帮助:flexdeveloper.eu/forums/flex-charting/…
  • 另外,这是一个扩展数据网格和操作数据提示的示例。您可能想尝试类似的方法:whatsmytitletoday.blogspot.com/2008/11/…
  • 谢谢,会检查这些...我认为 flexdeveloper 链接比其他链接更相关,我会先尝试然后发布结果。
  • 我有几乎类似的问题,但没有关闭,如果 dataTipsFunction 中返回的内容为空或 null,我还想隐藏工具提示,我该怎么做?谢谢
【解决方案2】:

感谢 Devtron,http://www.flexdeveloper.eu/forums/flex-charting/disable-datatip-but-keep-mouse-event-on-line-chart/

正确描述了解决方案。

也可以设置myChart.setStyle("dataTipRenderer",mx.skins.ProgrammaticSkin); 摆脱数据提示的显示。

两个小问题,

  • 在清除图形之前,我们需要知道tip的值。
  • 无法删除将数据点连接到显示数据的矩形的线。但这对我来说已经足够了。

【讨论】:

  • 上面提供的链接已经不存在了,你能具体说明一下你是怎么做的吗?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2016-09-10
  • 2019-09-21
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多