(仅限 Flex 数据可视化组件)
mx.charts
public class CategoryAxis
继承CategoryAxis Inheritance AxisBase Inheritance EventDispatcher Inheritance Object
实现 IAxis

CategoryAxis 类允许图表表示由轴上的一组离散值组成的数据。通常可以使用 CategoryAxis 类定义一组沿图表的轴显示的标签。例如,按城市、年份、业务部门等呈现数据的图表。

图表中使用的 CategoryAxis 不会从包含的图表中继承其 dataProvider 属性。必须在 CategoryAxis 上显式设置 dataProvider 属性。

当您可以使用相同的 dataProvider 为图表提供数据并为 CategoryAxis 提供类别时,则 CategoryAxis 可以优化呈现效果(如果其 dataProvider 相对静止)。如果可能,请确保类别相对静止,并将更改的数据存储在单独的 dataProviders 中。

dataProvider 属性可以接受字符串数组,也可以接受具有可指定类别名称的属性的记录(对象)数组。如果指定了 categoryField 属性,则 CategoryAxis 假定 dataProvider 是一个对象数组。如果 categoryFieldnull,则 CategoryAxis 假定 dataProvider 是一个字符串数组。

MXML 语法expanded隐藏 MXML 语法

The <mx:CategoryAxis> tag inherits all the properties of its parent classes and adds the following properties:

  <mx:CategoryAxis
    Properties
    categoryField="null"
    dataFunction="No default"
    dataProvider="No default"
    labelFunction="No default"
    padding="Default depends on chart type"
    ticksBetweenLabels="true"
  />
  

查看示例

另请参见

About the axis classes
About the CategoryAxis class
Adding axis titles
Defining axis labels


公共属性
 属性定义方
  baseline : Number
[只读 (read-only)] 轴的基线位置。
CategoryAxis
  categoryField : String
指定包含标签文本的数据提供程序的字段。
CategoryAxis
 InheritedchartDataProvider : Object
[只写] 分配给封闭图表的数据提供程序。
AxisBase
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  dataFunction : Function
指定一个方法,其返回值应可用作当前项目的 categoryValue。如果设置了此属性,则自定义数据函数的返回值优先于 categoryField。自定义 dataFunction 使用以下签名:function_name (axis:CategoryAxis, item:Object):Object { ...
CategoryAxis
  dataProvider : Object
指定包含标签名称的数据源。
CategoryAxis
 InheriteddisplayName : String
轴的名称。
AxisBase
  labelFunction : Function
指定一个函数,用于定义为 CategoryAxis 的 dataProvider 中的各个项目生成的标签。
CategoryAxis
  padding : Number
指定在屏幕上呈现数据时添加到轴上任意一端的填充。
CategoryAxis
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  ticksBetweenLabels : Boolean
指定轴上主刻度线相对于类别标签的位置。
CategoryAxis
 Inheritedtitle : String
沿该轴显示的标题文本。
AxisBase
 InheritedunitSize : Number
[只读 (read-only)] 由该轴表示的一个数据单位大小。
AxisBase
公共方法
 方法定义方
  
构造函数。
CategoryAxis
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
在图表数据更改时触发通知范围对象的事件。
AxisBase
 Inherited
将事件调度到事件流中。
EventDispatcher
  
filterCache(cache:Array, field:String, filteredString:String):void
将任意类型的一组值过滤为可以映射的一组数字。
CategoryAxis
  
格式化值以便在 DataTip 中显示。
CategoryAxis
  
确定范围以估计轴标签的内容。
CategoryAxis
  
getLabels(minimumAxisLength:Number):AxisLabelSet
获取显示的标签文本。
CategoryAxis
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
沿轴将一个位置映射回数字数据值。
CategoryAxis
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
mapCache(cache:Array, field:String, convertedField:String, indexValues:Boolean = false):void
将任意类型的一组值转换为一组可以转换为屏幕坐标的数字。
CategoryAxis
  
确定轴处理重叠标签的方式。
CategoryAxis
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
reduceLabels(intervalStart:AxisLabel, intervalEnd:AxisLabel):AxisLabelSet
当在不发生重叠的情况下 AxisRenderer 无法清楚地显示标签时调用,像 Axis 对象减少标签组中标签的数目一样。
CategoryAxis
 Inherited
使用轴的每个 DataTransform 都将自身注册到该轴。
AxisBase
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
transformCache(cache:Array, field:String, convertedField:String):void
将一组来自数据空间的值映射到屏幕空间。
CategoryAxis
 Inherited
使用轴的每个 DataTransform 都将自身注册到该轴。
AxisBase
  
更新图表。
CategoryAxis
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
 Inherited
describeData(dimension:String, requiredFields:uint):Array
由具有控制地位的 DataTransform 调用,以获得由此 IChartElement 表示的数据描述。
AxisBase
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
属性详细信息
baseline属性
baseline:Number  [只读 (read-only)]

轴的基线位置。当未指定最小值时,一些系列(如 ColumnSeries 或 AreaSeries)将使用此值确定填充区域的基础。



实现
    public function get baseline():Number
categoryField属性 
categoryField:String  [读写]

指定包含标签文本的数据提供程序的字段。如果此属性为 null,则 CategoryAxis 假定 dataProvider 包含字符串数组。

默认值为 null.



实现
    public function get categoryField():String
    public function set categoryField(value:String):void
dataFunction属性 
dataFunction:Function  [读写]

指定一个方法,其返回值应可用作当前项目的 categoryValue。如果设置了此属性,则自定义数据函数的返回值优先于 categoryField

自定义 dataFunction 使用以下签名:

              
              function_name
              (axis:CategoryAxis, item:Object):Object { ... }
            
axis 是使用此 dataFunction 的当前轴,item 是所考虑的 dataProvider 中的项目。此函数返回一个对象。

例如,自定义 dataFunction 的一种用法是从包含带有嵌套字段的项目的 dataProvider 中返回值。



实现
    public function get dataFunction():Function
    public function set dataFunction(value:Function):void

示例
如何使用示例
public function myFunction(axis:CategoryAxis,item:Object):Object {
          return(item.Country.State);
     }
dataProvider属性 
dataProvider:Object  [读写]

指定包含标签名称的数据源。dataProvider 可以是字符串 Array、对象 Array 或者任何实现了 IList 或 ICollectionView 接口的对象。如果 dataProvider 是字符串 Array,请确保将 categoryField 属性设置为 null。如果 dataProvider 是对象 Array,请将 categoryField 属性设置为包含标签文本的字段的名称。



实现
    public function get dataProvider():Object
    public function set dataProvider(value:Object):void
labelFunction属性 
labelFunction:Function  [读写]

指定一个函数,用于定义为 CategoryAxis 的 dataProvider 中的各个项目生成的标签。如果未提供 labelFunction,则轴标签将默认为类别自身的值。

CategoryAxis 的 labelFunction 方法使用以下签名:

            function
            function_name
            (
            categoryValue
            :Object,
            previousCategoryValue
            :Object,
            axis
            :CategoryAxis,
            categoryItem
            :Object):String { ... }
          

位置:

Flex 将返回的 String 显示为轴标签。

如果未设置 categoryField 属性,则该值与 categoryValue 属性相同。



实现
    public function get labelFunction():Function
    public function set labelFunction(value:Function):void
padding属性 
padding:Number  [读写]

指定在屏幕上呈现数据时添加到轴上任意一端的填充。如果设置为 0,则将第一个类别映射到轴的最前端,将最后一个类别映射到末端。如果设置为 0.5,则保留类别一半宽度的填充,该类别应位于轴的前端与第一个类别之间以及最后一个类别和轴的末端之间的轴上。

这对于呈现内容超出类别范围的图表类型(如列和栏)很有用。但是,当用作 LineChart 或 AreaChart 中的 horizontalAxis 时,将被重置为 0。

默认值为 0.5.



实现
    public function get padding():Number
    public function set padding(value:Number):void
ticksBetweenLabels属性 
ticksBetweenLabels:Boolean  [读写]

指定轴上主刻度线相对于类别标签的位置。如果为 true,则刻度线(以及所有相关网格线)将显示在各类别之间。如果为 false,则刻度线将显示在类别的中间部分,与标签对齐。



实现
    public function get ticksBetweenLabels():Boolean
    public function set ticksBetweenLabels(value:Boolean):void
构造函数详细信息
CategoryAxis()构造函数
public function CategoryAxis()

构造函数。

方法详细信息
filterCache()方法
public function filterCache(cache:Array, field:String, filteredString:String):void

将任意类型的一组值过滤为可以映射的一组数字。

参数

cache:Array — 可从中读取和存储转换后的值的对象数组。
 
field:String — 包含过滤之前的值的缓存 Array 中所含的对象域。
 
filteredString:String — 存储过滤后的值的缓存 Array 中所含的对象域。

formatForScreen()方法 
public function formatForScreen(value:Object):String

格式化值以便在 DataTip 中显示。返回用户可读的字符串。

参数

value:Object — 转换为 String 类型的值。

返回
String — DataTip 的文本。
getLabelEstimate()方法 
public function getLabelEstimate():AxisLabelSet

确定范围以估计轴标签的内容。轴几乎立即调用 getLabels() 方法以获取真实值。轴使用估计的值调整图表边距,因此只要估计的标签和实际标签(由 getLabels() 方法返回)间存在差别,就会调整标签以满足要求。

当返回估计值时,轴只需返回最小和最大标签。如果标签组完全是静态的,不会根据轴大小在屏幕上显示,则轴可通过此函数返回整个标签组,并将估计值标记为准确值。

返回
AxisLabelSet — 一个 AxisLabel 对象 Array。
getLabels()方法 
public function getLabels(minimumAxisLength:Number):AxisLabelSet

获取显示的标签文本。当 Flex 调用此方法时,轴已确定标签的最小长度。

参数

minimumAxisLength:Number — 轴的最小长度(以像素为单位)。轴长可以大于此值,但不可以小于此值。

返回
AxisLabelSet — 一个 AxisLabel 对象数组。
invertTransform()方法 
public function invertTransform(value:Number):Object

沿轴将一个位置映射回数字数据值。

参数

value:Number — 轴的范围。此参数应介于 0 和 1 之间,0 表示轴的下限,1 表示轴的上限。

返回
Object — 包含转换后的值的对象。
mapCache()方法 
public function mapCache(cache:Array, field:String, convertedField:String, indexValues:Boolean = false):void

将任意类型的一组值转换为一组可以转换为屏幕坐标的数字。

参数

cache:Array — 可从中读取和存储转换后的值的对象数组。
 
field:String — 包含转换之前的值的缓存 Array 中所含的对象域。
 
convertedField:String — 存储转换后的值的缓存 Array 中所含的对象域。
 
indexValues:Boolean (default = false) — 如果要映射的值是索引值,则此参数为 true;如果这些值是自然数据值,则此参数为 false

preferDropLabels()方法 
public function preferDropLabels():Boolean

确定轴处理重叠标签的方式。通常,数字范围返回 true,而基于离散值的范围不返回此值。您可以通过直接在轴上设置此属性来覆盖此属性。

返回
Boolean — 如果可以在不丢失数据的情况下删除标签,则为 true;否则为 false
reduceLabels()方法 
public function reduceLabels(intervalStart:AxisLabel, intervalEnd:AxisLabel):AxisLabelSet

当在不发生重叠的情况下 AxisRenderer 无法清楚地显示标签时调用,像 Axis 对象减少标签组中标签的数目一样。此方法传递重叠的两个标签。

参数

intervalStart:AxisLabel — 标签重叠处间隔的开始位置。
 
intervalEnd:AxisLabel — 标签重叠处间隔的结束位置。

返回
AxisLabelSet — 通过减少标签的数目来解决重叠问题的新标签组。
transformCache()方法 
public function transformCache(cache:Array, field:String, convertedField:String):void

将一组来自数据空间的值映射到屏幕空间。

参数

cache:Array — 可从中读取和存储映射后的值的对象 Array。
 
field:String — 包含映射之前的值的缓存 Array 中所含的对象域。
 
convertedField:String — 存储映射后的值的缓存 Array 中所含的对象域。

update()方法 
public function update():void

更新图表。可在每个帧中多次调用此方法。

示例 如何使用示例
HLOCChartExample.mxml
<?xml version="1.0"?>
<!-- Simple example to demonstrate the HLOCChart control. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[          
        import mx.collections.ArrayCollection;

        [Bindable]
        private var stockDataAC:ArrayCollection = new ArrayCollection( [
            { Date: "25-Jul", Open: 40.55,  High: 40.75, Low: 40.24, Close:40.31},
            { Date: "26-Jul", Open: 40.15,  High: 40.78, Low: 39.97, Close:40.34},
            { Date: "27-Jul", Open: 40.38,  High: 40.66, Low: 40, Close:40.63},
            { Date: "28-Jul", Open: 40.49,  High: 40.99, Low: 40.3, Close:40.98},
            { Date: "29-Jul", Open: 40.13,  High: 40.4, Low: 39.65, Close:39.95},
            { Date: "1-Aug", Open: 39.00,  High: 39.50, Low: 38.7, Close:38.6}, 
            { Date: "2-Aug", Open: 38.68,  High: 39.34, Low: 37.75, Close:38.84}, 
            { Date: "3-Aug", Open: 38.76,  High: 38.76, Low: 38.03, Close:38.12}, 
            { Date: "4-Aug", Open: 37.98,  High: 37.98, Low: 36.56, Close:36.69},                       
            { Date: "5-Aug", Open: 36.61,  High: 37, Low: 36.48, Close:36.86} ]); 
        ]]>
    </mx:Script>

    <!-- Define custom Stroke for the wick and ticks. -->
    <mx:Stroke id="s1" color="0x000000" weight="5" joints="bevel" caps="square"/>

    <mx:Panel title="HLOCChart Control Example" height="100%" width="100%">
        <mx:HLOCChart id="hlocchart" height="100%" width="100%"
            paddingRight="5" paddingLeft="5" 
            showDataTips="true" dataProvider="{stockDataAC}">
            
            <mx:verticalAxis>
                <mx:LinearAxis id="vaxis" baseAtZero="false" title="Price"/>
            </mx:verticalAxis>

            <mx:horizontalAxis>
                <mx:CategoryAxis id="haxis" categoryField="Date" title="Date"/>
            </mx:horizontalAxis>

            <mx:horizontalAxisRenderers>
                <mx:AxisRenderer axis="{haxis}" canDropLabels="true"/>
            </mx:horizontalAxisRenderers>

            <mx:series>
                <mx:HLOCSeries 
                    openField="Open" 
                    highField="High" 
                    lowField="Low" 
                    closeField="Close"
                    stroke="{s1}"
                    openTickStroke="{s1}"
                    closeTickStroke="{s1}"
                    openTickLength="7"
                    closeTickLength="7"
                />
            </mx:series>
        </mx:HLOCChart>
    </mx:Panel>
</mx:Application>