12
Nov
07

Controlling whether a LineChart should set its base value at zero

The following example creates a simple LineChart in Flex 3 and lets you toggle the baseAtZero property which controls whether the minimum or maximum chart value should be set to zero. Since a sample is worth 1000 words, read on.

Full code after the jump.

View MXML

<?xml version="1.0"?>
<!-- http://blog.flexexamples.com/2007/11/12/controlling-whether-a-linechart-should-set-its-base-value-at-zero/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:XMLListCollection id="dp">
        <mx:source>
            <mx:XMLList>
                <quote date="8/27/2007" open="40.38" high="41.11" low="40.25" close="40.81" />
                <quote date="8/24/2007" open="40.5" high="40.65" low="39.8" close="40.41" />
                <quote date="8/23/2007" open="40.82" high="40.99" low="40.33" close="40.6" />
                <quote date="8/22/2007" open="40.4" high="41" low="40.2" close="40.77" />
                <quote date="8/21/2007" open="40.41" high="40.95" low="39.87" close="40.13" />
                <quote date="8/20/2007" open="40.55" high="40.85" low="39.94" close="40.74" />
                <quote date="8/17/2007" open="40.18" high="40.48" low="39.32" close="40.32" />
                <quote date="8/16/2007" open="39.83" high="40.56" low="39.28" close="39.96" />
                <quote date="8/15/2007" open="40.22" high="41.25" low="40.12" close="40.18" />
                <quote date="8/14/2007" open="41.01" high="41.05" low="40.18" close="40.41" />
                <quote date="8/13/2007" open="41" high="41.13" low="40.26" close="40.83" />
                <quote date="8/10/2007" open="41.3" high="41.62" low="40.1" close="41.06" />
                <quote date="8/9/2007" open="39.9" high="41.74" low="39.86" close="40.75" />
                <quote date="8/8/2007" open="39.61" high="40.67" low="39.5" close="40.23" />
                <quote date="8/7/2007" open="39.08" high="39.91" low="38.61" close="39.42" />
                <quote date="8/6/2007" open="38.71" high="39.77" low="38.54" close="39.38" />
                <quote date="8/3/2007" open="39.47" high="39.66" low="38.7" close="38.75" />
                <quote date="8/2/2007" open="39.4" high="39.8" low="39.05" close="39.52" />
                <quote date="8/1/2007" open="40.29" high="40.49" low="38.57" close="39.58" />
            </mx:XMLList>
        </mx:source>
    </mx:XMLListCollection>

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

        <mx:Spacer width="100%" />

        <mx:Legend dataProvider="{lineChart}" />
    </mx:ApplicationControlBar>

    <mx:LineChart id="lineChart"
            showDataTips="true"
            dataProvider="{dp}"
            width="100%"
            height="100%">

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

        <!-- vertical axis -->
        <mx:verticalAxis>
            <mx:LinearAxis baseAtZero="{checkBox.selected}" title="Price" />
        </mx:verticalAxis>

        <!-- horizontal axis -->
        <mx:horizontalAxis>
            <mx:CategoryAxis id="ca" categoryField="@date" title="Date" />
        </mx:horizontalAxis>

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

        <!-- series -->
        <mx:series>
            <mx:LineSeries yField="@close" form="curve" displayName="Close" />
            <mx:LineSeries yField="@open" form="curve" displayName="Open" />
        </mx:series>

    </mx:LineChart>

</mx:Application>

View source is enabled in the following example.

For more information on the NumericAxis class’s baseAtZero property, see http://livedocs.adobe.com/flex/3/langref/mx/charts/chartClasses/NumericAxis.html#baseAtZero.


2 Responses to “Controlling whether a LineChart should set its base value at zero”


  1. 1 david chen Apr 29th, 2008 at 2:04 am

    When I compilerd the mxml file in Flex3 sdk, it appears following word:
    Error: 找不到(don’t find Type),或它不是編譯時期常數:LineChart。Why?
    How can I do?

  2. 2 peterd Apr 29th, 2008 at 11:50 am

    david chen,

    Do you have Flex Professional installed, and does your current SDK include the charting SWCs?

    Peter

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