24
Sep
07

Animating data changes in a Flex Pie Chart

The following example shows how you can animate a pie chart using the showDataEffect effect and SeriesInterpolate class.

Full code after the jump.

For more information on setting up charting in an Adobe Flex 3 Beta 1 project, see “Charting in Flex Builder 3 (public beta 1 edition)“.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/09/24/animating-data-changes-in-a-flex-pie-chart/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        creationComplete="initDP();">

    <mx:Script>
        <![CDATA[
            private const MAX_ITEMS:uint = 10;

            private function initDP():void {
                var i:uint;
                dp = [];
                for (i = 0; i < MAX_ITEMS; i++) {
                    dp.push({data:getRandomUint(100), label:"item " + i});
                }
            }

            private function getRandomUint(max:uint):uint {
                return Math.round(Math.random() * max);
            }
        ]]>
    </mx:Script>

    <mx:Array id="dp" />

    <mx:ApplicationControlBar dock="true">
        <mx:Button label="Change Data"
                click="initDP();" />
    </mx:ApplicationControlBar>

    <mx:PieChart id="chart"
            height="100%"
            width="100%"
            dataProvider="{dp}">
        <mx:series>
            <mx:PieSeries field="data">
                <mx:showDataEffect>
                    <mx:SeriesInterpolate duration="1000" />
                </mx:showDataEffect>
            </mx:PieSeries>
        </mx:series>
    </mx:PieChart>

</mx:Application>

View source is enabled in the following example.


5 Responses to “Animating data changes in a Flex Pie Chart”


  1. 1 Rahul Sep 24th, 2007 at 9:18 pm

    Hi,
    I have been reading your blog for quite some time and let me tell you it is absolutely fantastic. I have been working with flex for quite a some time now but havent explored so many minor things that you work on.
    Your examples are simple yet useful to all.
    Keep the good work up.

  2. 2 Scott May 22nd, 2008 at 5:20 am

    On initial load of this page, the pie chart seems to build itself in a counter-clockwise fashion, how is this effect accomplished? I cannot seem to duplicate it.

    Thanks!

  3. 3 peterd May 22nd, 2008 at 8:40 am

    Scott,

    I believe it is because of the showDataEffect and SeriesInterpolate on the PieSeries (although I really only tested this in Flex 3):

    <mx:PieChart id="chart"
            height="100%"
            width="100%"
            dataProvider="{dp}">
        <mx:series>
            <mx:PieSeries field="data">
                <mx:showDataEffect>
                    <mx:SeriesInterpolate duration="1000" />
                </mx:showDataEffect>
            </mx:PieSeries>
        </mx:series>
    </mx:PieChart>
    

    Peter

  4. 4 Nidal Sep 16th, 2008 at 3:07 am

    Hi,

    First of all thank you a lot for this example, but I would like to know how to specify colors depending on the value? for example if I have number 5 I would like color the area representing this number with red.

    thank you again :).

  5. 5 Nidal Sep 17th, 2008 at 8:00 am

    Thank you I’ve found the response of my question, now what I try to do is the interpolation but in actionscript. this is what I did:

    var sI:SeriesInterpolate = new SeriesInterpolate();
    sI.duration=1000;
    pieSeries.setStyle("showDataEffect",sI);
    

    But it doesn’t change anything. I guess that I miss something but I don’t know what exactly!

    Help please :)

Leave a Reply

This blog is terrible at eating HTML tags. If you plan on posting code/XML, please escape your "<" characters as "&lt;" and your ">" characters as "&gt;".