(this is a simple but difficult problem; call-out to clever chart-coders):

When displaying multiple ColumnSeries in a clustered ColumnChart (3.5 SDK), the 
default behavior is to allocate a blank space when one of the series has no 
value in the dataprovider.  Below is a simple example (slightly modified from 
the base example of ColumnCharts in the help docs): when it comes to "Feb", it 
shows the values for Profit and Expenses, but also leaves a blank space for 
"VaryingOccurence".  This only happens when the Chart type is clustered (the 
default).

This may seem like nitpicking, but in my context I have about 12 different 
series, many of which do not occur for each category value - so each of my 
category values has a whole lot of empty space between the clustered columns.  
I just want to tell the Chart, "don't allocate any space for the chartItem in 
the series if its null" (or even 'if it's zero' would be fine): i.e., 
"ColumnSeries.showNullValues=false" - but that doesn't exist.

Overriding updateDisplayList (to draw nothing) in a custom itemRenderer for the 
series does not work: the chart still allocates space for the row.  I'm 
thinking there's got to be someplace in ColumnChart where it's allocating space 
for the series (referring to properties like columnWidthRatio), but I can't 
find where to tell it "don't bother if the chartItem is null".

If this is impossible to achieve via subclassing the Chart or the Series, does 
anyone have any creative ideas to achieve the end-result? To reiterate, the 
goal would be to show the result of the code below, but without the empty space 
for the null value in Feb.

thanks,
-Ped

<?xml version="1.0"?>
<!-- charts/BasicColumn.mxml --><mx:Application 
xmlns:mx="http://www.adobe.com/2006/mxml";>
  <mx:Script><![CDATA[
     import mx.collections.ArrayCollection;
     [Bindable]
     public var expenses:ArrayCollection = new ArrayCollection([
        {Month:"Jan", Profit:2000, VaryingOccurence:1750, Expenses:1500},
        {Month:"Feb", Profit:1000, Expenses:200}, //no instance of 
VaryingOccurence
        {Month:"Mar", Profit:1500, VaryingOccurence:750, Expenses:500}
     ]);
  ]]></mx:Script>
  <mx:Panel title="Column Chart">
     <mx:ColumnChart id="myChart" dataProvider="{expenses}" showDataTips="true" 
type="clustered" >
        <mx:horizontalAxis>
           <mx:CategoryAxis categoryField="Month" />
        </mx:horizontalAxis>
        <mx:series>
           <mx:ColumnSeries yField="Profit" displayName="Profit" />
           <mx:ColumnSeries yField="VaryingOccurence" displayName="Varying 
Occurence" />
           <mx:ColumnSeries yField="Expenses" displayName="Expenses"  />
        </mx:series>
     </mx:ColumnChart>
     <mx:Legend dataProvider="{myChart}"/>
  </mx:Panel>
</mx:Application>

Reply via email to