The following example shows how you can change the barWidthRatio style to control how wide each bar is in relation to the category width.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/10/15/changing-the-bar-width-ratio-on-a-flex-bar-chart/ -->
<mx:Application name="BarChart_barWidthRatio_test"
        xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">
 
    <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="barWidthRatio:">
                <mx:HSlider id="slider"
                        minimum="0.0"
                        maximum="1.0"
                        value="0.6"
                        liveDragging="true"
                        tickInterval="0.1" />
            </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="avg"
                    displayName="avg"
                    barWidthRatio="{slider.value}" />
        </mx:series>
    </mx:BarChart>
 
</mx:Application>

View source is enabled in the following example.

 
Tagged with:
 
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.

8 Responses to Changing the bar width ratio on a Flex Bar Chart

  1. Rob says:

    Do you know if it’s possible to set the bar widths individually? Or change the spacing between bars individually?

  2. angryProgrammer says:

    do you know how to display the data in a database on the barchart?

    • Peter deHaan says:

      @angryProgrammer,

      I think the easiest way would be to create a server-side script page using ColdFusion/PHP/ASP which retrieves the data from a database and outputs it as XML. Next, use the <mx:HTTPService/> tag in your Flex application to get the XML data from your server-side script and convert it into an XMLListCollection object which you can use as the BarChart control’s data provider.

      Peter

  3. rocksoccer says:

    Just want to mention that, if you want to use barWidthRatio with actionscript code, you need to set it in either creationComplete or updateComplete event handler. Otherwise, it does NOT work at all.

    It seems some properties in Flex must be set after creation and update. Are these the bugs, or they design it to be like this?

  4. colin says:

    rocksocker, peter:
    i can confirm that you need to do this in updateComplete when working with multiple series. resizing wasn’t working for me until i moved it to that handler.

  5. Raviteja says:

    I need a automated tool developed in FLEX, to show the bar charts when we enter the values..

    reference..
    http://asia.firstbaseit.net/infiniti/resources/flash/inner_banner.swf

    asap…

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