The following example shows how you can display the labels in a ColumnSeries either vertically or horizontally in a ColumnChart control in Flex by setting the Boolean showLabelVertically property.

Full code after the jump.

View MXML

<?xml version="1.0"?>
<!-- http://blog.flexexamples.com/2008/01/23/displaying-the-labels-vertically-in-flex-columnchart-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Style>
        @font-face {
            src: local("Arial");
            fontFamily: ArialEmbedded;
        }

        ColumnChart {
            fontFamily: ArialEmbedded;
        }
    </mx:Style>

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

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

            private function categoryAxis_labelFunc(item:Object, prevValue:Object, axis:CategoryAxis, categoryItem:Object):String {
                var datNum:Number = Date.parse(item);
                var tempDate:Date = new Date(datNum);
                return shortDateFormatter.format(tempDate).toUpperCase();
            }

            private function columnSeries_labelFunc(element:ChartItem, series:Series):String {
                var csi:ColumnSeriesItem = ColumnSeriesItem(element);
                var ser:ColumnSeries = ColumnSeries(series);

                var datNum:Number = Date.parse(csi.item.@date);
                var tempDate:Date = new Date(datNum);
                return fullDateFormatter.format(tempDate);
            }
        ]]>
    </mx:Script>

    <mx:DateFormatter id="shortDateFormatter" formatString="DD" />
    <mx:DateFormatter id="fullDateFormatter" formatString="MMM D, YYYY" />
    <mx:CurrencyFormatter id="currencyFormatter" precision="2" />

    <mx:XMLListCollection id="dp">
        <mx:source>
            <mx:XMLList>
                <quote date="8/1/2007" open="40.29" close="39.58" />
                <quote date="8/2/2007" open="39.4" close="39.52" />
                <quote date="8/3/2007" open="39.47" close="38.75" />
                <quote date="8/6/2007" open="38.71" close="39.38" />
                <quote date="8/7/2007" open="39.08" close="39.42" />
                <quote date="8/8/2007" open="39.61" close="40.23" />
                <quote date="8/9/2007" open="39.9" close="40.75" />
                <quote date="8/10/2007" open="41.3" close="41.06" />
                <quote date="8/13/2007" open="41" close="40.83" />
                <quote date="8/14/2007" open="41.01" close="40.41" />
                <quote date="8/15/2007" open="40.22" close="40.18" />
                <quote date="8/16/2007" open="39.83" close="39.96" />
                <quote date="8/17/2007" open="40.18" close="40.32" />
                <quote date="8/20/2007" open="40.55" close="40.74" />
                <quote date="8/21/2007" open="40.41" close="40.13" />
                <quote date="8/22/2007" open="40.4" close="40.77" />
                <quote date="8/23/2007" open="40.82" close="40.6" />
                <quote date="8/24/2007" open="40.5" close="40.41" />
                <quote date="8/27/2007" open="40.38" close="40.81" />
            </mx:XMLList>
        </mx:source>
    </mx:XMLListCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:CheckBox id="checkBox"
                label="showLabelVertically:"
                labelPlacement="left"
                selected="true" />
    </mx:ApplicationControlBar>

    <mx:ColumnChart id="columnChart"
            showDataTips="true"
            dataProvider="{dp}"
            width="100%"
            height="100%"
            showLabelVertically="{checkBox.selected}">

        <!-- vertical axis -->
        <mx:verticalAxis>
            <mx:LinearAxis baseAtZero="false"
                    labelFunction="linearAxis_labelFunc" />
        </mx:verticalAxis>

        <!-- horizontal axis -->
        <mx:horizontalAxis>
            <mx:CategoryAxis id="ca"
                    categoryField="@date"
                    title="August 2007"
                    labelFunction="categoryAxis_labelFunc" />
        </mx:horizontalAxis>

        <!-- horizontal axis renderer -->
        <mx:horizontalAxisRenderers>
            <mx:AxisRenderer axis="{ca}"
                    canDropLabels="true" />
        </mx:horizontalAxisRenderers>

        <!-- series -->
        <mx:series>
            <mx:ColumnSeries displayName="Open"
                    xField="@date"
                    yField="@open"
                    labelFunction="columnSeries_labelFunc"
                    labelPosition="outside">
            </mx:ColumnSeries>
        </mx:series>

        <!-- series filters -->
        <mx:seriesFilters>
            <mx:Array />
        </mx:seriesFilters>
    </mx:ColumnChart>

</mx:Application>

View source is enabled in the following example. | View SWF in new window

 
About The Author

Peter deHaan

Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.

4 Responses to Displaying the labels vertically in Flex ColumnChart control

  1. Karel says:

    The error msg “Could not resolve for a component implementation. Help Please.

  2. Lance says:

    any idea how to use this for a pie chart?

  3. Hiperlouro says:

    Hi!
    I’m having trouble with this functionality. I want to show the labels vertically as you described in this example, however, I don’t want to truncate the label text, even if it means to overlap the column.

    Any suggestions?! Thanks

  4. Marcelificus says:

    Vale vale!!! saludos

Leave a Reply

Your email address will not be published.

You may 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