Using data effects to animate chart data

by Peter deHaan on October 15, 2007

in BarChart, Charting, SeriesInterpolate, SeriesSlide, SeriesZoom

In a previous example, “Animating data changes in a Flex Pie Chart”, we looked at using the SeriesInterpolate effect to animate a pie chart when the data changed.

The following example shows how you can use the SeriesInterpolate, SeriesSlide, and SeriesZoom effects to create different animations.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/10/15/using-data-effects-to-animate-chart-data/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            private function updateDP():void {
                var str:String = categoryFieldComboBox.selectedItem.data;
                barSeries.xField = str;
                barSeries.displayName = str;
            }
        ]]>
    </mx:Script>

    <mx:SeriesInterpolate id="seriesInterpolate" duration="1000" />
    <mx:SeriesSlide id="seriesSlide" duration="1000" direction="right" />
    <mx:SeriesZoom id="seriesZoom" duration="1000" />

    <mx:Array id="dataEffects">
        <mx:Object label="seriesInterpolate" data="{seriesInterpolate}" />
        <mx:Object label="seriesSlide" data="{seriesSlide}" />
        <mx:Object label="seriesZoom" data="{seriesZoom}" />
    </mx:Array>

    <mx:Array id="categoryFields">
        <mx:Object data="obp" label="OBP" />
        <mx:Object data="slg" label="SLG" />
        <mx:Object data="avg" label="AVG" />
    </mx:Array>

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object name="R Winn" obp=".353" slg=".445" avg=".300" />
                <mx:Object name="P Feliz" obp=".290" slg=".418" avg=".253" />
                <mx:Object name="O Vizquel" obp=".305" slg=".316" avg=".246" />
                <mx:Object name="B Molina" obp=".298" slg=".433" avg=".276" />
                <mx:Object name="R Durham" obp=".295" slg=".343" avg=".218" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:Form>
            <mx:FormItem label="categoryField:">
                <mx:ComboBox id="categoryFieldComboBox"
                    dataProvider="{categoryFields}"
                        change="updateDP();" />
            </mx:FormItem>
            <mx:FormItem label="showDataEffect:">
                <mx:ComboBox id="showDataEffectComboBox"
                        dataProvider="{dataEffects}"
                        change="updateDP();" />
            </mx:FormItem>
        </mx:Form>
    </mx:ApplicationControlBar>

     <mx:BarChart id="barChart"
             showDataTips="true"
             dataProvider="{arrColl}"
             width="100%"
             height="100%">
        <mx:verticalAxis>
            <mx:CategoryAxis categoryField="name"/>
        </mx:verticalAxis>
        <mx:series>
            <mx:BarSeries id="barSeries"
                    yField="name"
                    xField="obp"
                    displayName="obp"
                    showDataEffect="{showDataEffectComboBox.selectedItem.data}" />
        </mx:series>
    </mx:BarChart>

</mx:Application>

View source is enabled in the following example.

{ 4 comments… read them below or add one }

1 AJ Simon November 1, 2007 at 5:20 am

it look like you are a flex guy and i am trying to start flexing… i have 6 years experience with Flash and actionscript, so picking this up is not to bad.

however, i am having trouble with a very basic setup issue. i am trying to develop locally and connect to Coldfusion for the backend on our development server… this keeps Failing, however when i run locally and point to my local services-config file… it runs fine. when i publish to the development server and compile poiting to the development servcies-config file, it fails.

not sure what i am doing wrong here, but these cool flex apps are not that great if my audience has to come to my office to see them on my local machine :)

thanks for and help that you can provide

Reply

2 B Casaleno March 29, 2009 at 9:53 am

This is my favorite FLEX site. Your examples are succint and easy to follow. Thank you for all newbies trying to pick up FLEX quickly.

Reply

3 Barako Bull July 24, 2009 at 1:45 am

Thanks for the tutorial! it really helped me out.

Reply

4 Siraj July 27, 2009 at 6:56 pm

Hi Peter… I am trying to add same effects on LineSeries which I am creating dynamically, but its not giving the desired result… code excerpt:
var ars:LineSeries = new LineSeries();
ars.dataProvider = new ArrayCollection(arr);
ars.yField= “temperature”;
ars.xField= “time”;
ars.setStyle(’showDataEffect’,slideIn);
ars.setStyle(‘hideDataEffect’,slideOut);

Reply

Leave a Comment

Sorry, this blog is terrible at eating HTML comments.
If you're pasting any HTML/XML/MXML code, you need to convert your < characters to &lt; and your > characters to &gt; .

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree

Previous post:

Next post: