25
Nov
07

Adding custom labels to a Flex ColumnChart control’s column series

The following example shows how you can create custom labels for a ColumnChart control’s ColumnSeries in Flex, as well as creating custom label functions for a linear axis and custom data tips for the ColumnChart control.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/11/25/adding-custom-labels-to-a-flex-columnchart-controls-column-series/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.charts.ChartItem;
            import mx.charts.HitData;
            import mx.charts.chartClasses.IAxis;
            import mx.charts.chartClasses.Series;
            import mx.charts.series.ColumnSet;
            import mx.charts.series.items.ColumnSeriesItem;
            import mx.utils.StringUtil;

            private function linearAxis_labelFunc(item:Object, prevValue:Object, axis:IAxis):String {
                return numberFormatter.format(item);
            }

            private function columnChart_dataTipFunc(item:HitData):String {
                var cSI:ColumnSeriesItem = item.chartItem as ColumnSeriesItem;
                var col:String = ColumnSeries(item.element).yField;
                return StringUtil.substitute("<b>{0}</b><br>{1}: {2}", cSI.item.name, col, numberFormatter.format(cSI.item[col]));
            }

            private function columnSeries_labelFunc(chartItem:ChartItem, series:Series):String {
                var col:String = ColumnSeries(chartItem.element).yField;
                return numberFormatter.format(chartItem.item[col]);
            }
        ]]>
    </mx:Script>

    <mx:NumberFormatter id="numberFormatter" precision="3" />

    <mx:Array id="arr">
        <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:ApplicationControlBar dock="true">
        <mx:Legend dataProvider="{columnChart}" direction="horizontal" />
    </mx:ApplicationControlBar>

    <mx:ColumnChart id="columnChart"
            showDataTips="true"
            dataProvider="{arr}"
            dataTipFunction="columnChart_dataTipFunc"
            columnWidthRatio="0.9"
            type="stacked"
            width="100%"
            height="100%">

        <mx:horizontalAxis>
            <mx:CategoryAxis id="ca" categoryField="name" />
        </mx:horizontalAxis>

        <mx:verticalAxis>
            <mx:LinearAxis labelFunction="linearAxis_labelFunc" />
        </mx:verticalAxis>

        <mx:horizontalAxisRenderers>
            <mx:AxisRenderer axis="{ca}" />
        </mx:horizontalAxisRenderers>

        <mx:series>
            <mx:ColumnSeries id="avgSeries"
                    xField="name"
                    yField="avg"
                    displayName="Batting Average (AVG)"
                    labelPosition="inside"
                    labelFunction="columnSeries_labelFunc" />

            <mx:ColumnSeries id="obpSeries"
                    xField="name"
                    yField="obp"
                    displayName="On-base Percentage (OBP)"
                    labelPosition="inside"
                    labelFunction="columnSeries_labelFunc" />

            <mx:ColumnSeries id="slgSeries"
                    xField="name"
                    yField="slg"
                    displayName="Slugging Percentage (SLG)"
                    labelPosition="inside"
                    labelFunction="columnSeries_labelFunc" />
        </mx:series>

        <mx:seriesFilters>
            <mx:Array />
        </mx:seriesFilters>

    </mx:ColumnChart>

</mx:Application>

View source is enabled in the following example.


9 Responses to “Adding custom labels to a Flex ColumnChart control's column series”


  1. 1 valentineday Nov 27th, 2007 at 1:58 pm

    no more online preview?

  2. 2 peterd Nov 27th, 2007 at 2:20 pm

    Sorry, I’ve just had some problems with my Internet and FTP at home so I haven’t been able to upload the SWFs. I’ll go back tonight and try and add the missing SWFs.

    Peter

  3. 3 Mauricio Nov 28th, 2007 at 10:51 am

    This sample it’s for flex 2 or flex 3, because in flex 2 I got a problemn with the labelposition=”inside” in column series. Could you help me with that, please ?
    Sample Code:

    problem: “Cannot resolve attribute ‘labelPosition’ for component mx.charts.series.ColumnSeries ”
    :(

  4. 4 peterd Nov 28th, 2007 at 11:58 am

    All the samples are built using various builds of the Flex 3 SDK, sorry.

    Peter

  5. 5 WebGyver Dec 5th, 2007 at 6:01 am

    First of all, thank you for posting Flex code snippets and examples. For a Flex newbie like me, this is awesome stuff.

    And please keep it up. I’ll be stopping by here regularly.

  6. 6 Mani Dec 13th, 2007 at 4:05 am

    Hi everybody,

    pls see the following link. this is for columnchart with label.

    http://demo.quietlyscheming.com/chartBackgrounds/app.html

  7. 7 Enzo Canuzzi Feb 8th, 2008 at 7:21 am

    Hi thanks, fort your work! But I have one question - do you know how i can access the total value of a stack in the datatipfunction?

  8. 8 smote me Apr 9th, 2008 at 7:11 pm

    I love people who ask for help on blogs, read the docs, read the source, try a Google search why don’t you.

    It’s even more fun when they ask totally unrelated questions. Luv it.

    Smoted

  9. 9 Andrew price Jul 28th, 2008 at 9:04 am

    Have you had any problems with charts when only 1 col is the chart.

    The code below work but will not change the a chart with on one col

    can you help

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;".




November 2007
M T W T F S S
« Oct   Dec »
 1234
567891011
12131415161718
19202122232425
2627282930  

Badge Farm

  • Firefox 2
  • Powered by Redoable 1.2
  • Feeds burnt by Feedburner
  • Feed