Tip data LineChart tidak akan ditampilkan dengan satu titik data?

Di Flex 3, saya memiliki diagram garis. Penyedia data saya untuk diagram garis hanya berisi satu item.

Saat saya menggambar diagram garis, ia memplot intinya. Tapi itu tidak menunjukkan tip data.

Ini berfungsi jika ada lebih dari satu item di penyedia data.

Bagaimana cara membuat tip data terlihat untuk diagram garis dengan penyedia data yang berisi satu item data?


person user723644    schedule 06.06.2011    source sumber


Jawaban (3)


Gunakan PlotSeries daripada LineSeries ketika Anda hanya memiliki satu titik. Anda akan mendapatkan poin bulat yang bagus dengan dataTipnya. Cara melakukannya bergantung pada cara data Anda dibuat - jika data tidak berubah setelah ditetapkan ke penyedia data, Anda dapat memilih jenis rangkaian yang akan digunakan pada saat itu.

person Daniel Kitachewsky    schedule 06.06.2011

coba kode berikut, di actionscript,

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

dalam mxml,

<mx:LineSeries yField="Y" itemRenderer="mx.charts.renderers.CircleItemRenderer" xField="X" dataProvider="{lineDataProvider}">
person Kishore    schedule 17.06.2011
comment
dalam mxml, ‹mx:LineSeries yField=Y itemRenderer=mx.charts.renderers.CircleItemRenderer xField=X itemRenderer={} dataProvider={lineDataProvider}› - person Kishore; 17.06.2011

Ada solusi untuk menampilkan datatip. Kita perlu menambahkan event pendengar ROLL_OVER dan ROLL_OUT mouse ke rangkaian baris yang memiliki titik data tunggal.

<?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>
person Vinayak T    schedule 04.03.2016