Changing the bar width ratio on a Flex Bar Chart

by Peter deHaan on October 15, 2007

in BarChart, Charting

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.

{ 4 comments… read them below or add one }

1 Rob August 26, 2009 at 2:48 pm

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

Reply

2 Peter deHaan August 26, 2009 at 6:01 pm

@Rob,

I’m not aware of any, but I’m far from a Charting expert. You may want to ask on FlexCoders.

Peter

Reply

3 angryProgrammer September 20, 2009 at 8:26 pm

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

Reply

4 Peter deHaan September 21, 2009 at 6:58 am

@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

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: