`

flex 图表categoryField设置 labelFunction使用

    博客分类:
  • flex
阅读更多

CategoryAxis有一个叫做labelFunction的属性,这个属性的定义:指定一个函数,用于定义为CategoryAxis的dataProvider中的各个项目生成的标签。

所以修改的原理:可以利用labelFunction得到每个Label,然后再对其进行修改。

片段代码:
<mx:horizontalAxis>
  <mx:CategoryAxis id="ca"
         categoryField="@date" title="August 2007" labelFunction="categoryAxisLabelFun" />
</mx:horizontalAxis>
 
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return temp;
}

其中categoryAxisLabelFun的参数:
1、item:保存的就是Label里面文字信息。
2、prevValue:坐标轴上面,前一个类别的值。
3、axis:CategoryAxis的实例化对象。
4、categoryItem:是将要呈现的dataProvider中的项目。
所以与标签有关系的只有第一个参数:item。
 
以下代码分别是对CategoryAxis的标签进行修改的代码:
 
1、改变字体大小:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return  '<font size="20">' + temp + </font>';
}

2、改变字体粗细:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return  '<B>' + temp + </B>';
}

3、改变字体下划线:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return  '<U>' + temp + </U>';
}

4、改变字体斜体:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return  '<I>' + temp + </I>';
}

5、改变字体颜色:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
      var temp : String = item as String;
      return  '<font color="#ff0000">' + temp + </font>';
}

 

<?xml version="1.0"?>
<!-- charts/PredefinedAxisStyles.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	
	<mx:Script>
		<!--[CDATA[
			//导入相关包        
			import mx.collections.ArrayCollection;
			import mx.charts.*;
			import mx.charts.series.items.ColumnSeriesItem; 
			import mx.charts.ChartItem; 
			import mx.charts.chartClasses.Series; 
			import mx.charts.chartClasses.IAxis; 
			import mx.utils.ObjectUtil; 
			
			[Bindable]
			public var expenses:ArrayCollection = new ArrayCollection([
				{Month:"Jan", Profit:20, Expenses:15},
				{Month:"Feb", Profit:10, Expenses:20},
				{Month:"Jun", Profit:30, Expenses:40},
				{Month:"Aug", Profit:15, Expenses:25},
				{Month:"Set", Profit:40, Expenses:45}
			]);
			
			
			
			public function myLabelFormat(obj:Object,pcat:Object,ax:LinearAxis):String 
			{
				return  numForm.format(obj)+"%";
			}
			
			private function setCustomLabel(element:ChartItem, series:Series):String {
				// Get a refereence to the current data element.
				var data:ColumnSeriesItem = ColumnSeriesItem(element);        
				
				// Get a reference to the current series.        
				var currentSeries:ColumnSeries = ColumnSeries(series);
				
				// Create a return String and format the number.
				return  numForm.format(data.yNumber) + "%";        
			}
			
			
			// This method customizes the values of the axis labels.
			// This signature (with 4 arguments) is for a CategoryAxis.
			public function defineLabel(
				cat:Object, 
				pcat:Object,
				ax:CategoryAxis,
				labelItem:Object):String 
			{
				// Show contents of the labelItem:
				for (var s:String in labelItem) {
					trace(s + ":" + labelItem[s]);
				}
				
				// Return the customized categoryField value:
				return cat + "";
				
				// Note that if you did not specify a categoryField, 
				// cat would refer to the entire object and not the
				// value of a single field. You could then access 
				// fields by using cat.field_name.
			}
			
			
			
			public function myLabelDisplay(hd:HitData):String{
				//return hd.displayText + "%";
//				var curObj:Object = hd.item;   
//				var curSeries:BarSeries = BarSeries(hd.chartItem.element); // 获得当前的BarSeries   
//				return curObj.qual + "-" + curSeries.displayName + "\n" 
//					+ uqStatistics.getUQAs(curSeries.xField, curObj.qualObj).length 
//					+ RM.getString(BUNDLE_DASHBOARD, "label.piece");   
				var curObj:Object = hd.item;  
				var curSeries:ColumnSeries = ColumnSeries(hd.chartItem.element);
				if(curSeries.yField == "Profit")
					return curSeries.yField +  ":" + hd.item.Profit + "%";
				else 
					return curSeries.yField +  ":" + hd.item.Expenses + "%";
				
			}
			
			
		]]-->
	</mx:Script>
	<mx:NumberFormatter id="numForm" useThousandsSeparator="true"/>
	<mx:Panel title="Using Predefined Axis Styles" >
		<mx:ColumnChart id="column" dataProvider="{expenses}" showDataTips="true" dataTipFunction="myLabelDisplay">
			<mx:horizontalAxis>
				<mx:CategoryAxis 
					dataProvider="{expenses}" 
					categoryField="Month" labelFunction="defineLabel" 
					/>
			</mx:horizontalAxis>
			<!-- 设置纵坐标读取的属性 -->   
			<!-- 设置横坐标的最小刻度以及最大刻度,另外调用labelFunction重写刻度格式为百分比 --> 
			<mx:verticalAxis>
				<mx:LinearAxis  minimum="0" maximum="50" labelFunction="myLabelFormat"/>    
			</mx:verticalAxis>
			
			
			<mx:series>
				<mx:ColumnSeries 
					xField="Month" 
					yField="Profit"
					displayName="Profit" labelPosition="outside"  labelFunction="setCustomLabel"
					/>
				<mx:ColumnSeries 
					xField="Month" 
					yField="Expenses"
					displayName="Expenses" labelPosition="outside" labelFunction="setCustomLabel"
					/>
			</mx:series>
		</mx:ColumnChart>
		<mx:Legend dataProvider="{column}"/>

	</mx:Panel>	
	<mx:Style>	
		
		ColumnChart {
			horizontalAxisStyleName:myAxisStyles;
			verticalAxisStyleName:myAxisStyles;
		}
		
		.myAxisStyles {
			tickPlacement:none;
		}
	</mx:Style>
</mx:Application>

 

分享到:
评论

相关推荐

    flex做的四种图表(线、柱、饼、区域)直接用js调用

    每个扇区代表数据源中的一个条目,通过PieSeries类设置数据系列,调整sliceWidth表示每个扇区的大小,使用labelFunction可以自定义每个扇区的标签内容。 区域图则强调了数据的范围和区间,通常用于展示连续性数据的...

    Flex datagrid 自动设置列宽

    然而,Flex DataGrid默认并不提供直接设置列宽的功能,这可能会给开发者带来一些困扰,特别是当数据显示的需求较为复杂时。不过,有一些策略和技巧可以帮助我们实现自动设置列宽的功能,以适应不同的数据和用户界面...

    flex 统计,柱状图,饼图。

    在本案例中,"flex 统计,柱状图,饼图"指的是使用Flex来创建数据可视化工具,具体是柱状图和饼图这两种常见的图表类型。 柱状图是一种统计图表,用于比较类别之间的数量差异。在Flex中,可以使用mx.charts系列类来...

    Flex ColumnChart获取得焦点改变颜色

    通过以上分析,我们可以看到Flex的`ColumnChart`组件提供了丰富的自定义选项,包括数据源设置、轴配置以及事件处理,使得开发者能够轻松创建出功能强大且美观的图表界面。尤其在实现交互式设计方面,如获取焦点时...

    Flex做雷达图例子

    在Flex中,可以使用`CategoryAxis`类来创建轴,并设置其`labelFunction`属性来自定义标签。图例可以通过`Legend`组件来创建,通过`dataProvider`属性关联到图表。 在`RadarChartTest`这个文件中,很可能包含了实现...

    Flex画 坐标轴曲线 项目用过的 flex4 开发

    6. **性能优化**:对于大数据量的曲线图,考虑使用数据虚拟化技术,只渲染可视区域内的数据点,提高图表的滚动和缩放性能。 7. **示例代码**:创建一个简单的线图可能如下: ```actionscript xmlns:s=...

    flex tree的简单使用

    但我们可以自定义节点的显示方式,通过实现`ITreeDataDescriptor`接口或者使用`dataProvider`的`labelFunction`属性来定义一个函数,该函数根据数据项返回显示的文本。 4. **事件处理**:Tree组件触发多种事件,如`...

    flex 根据时间来画出动态曲线

    在IT领域,特别是针对Web应用开发中的数据可视化技术,Adobe Flex框架因其强大的图表绘制功能而备受推崇。在本文中,我们将深入探讨一个Flex应用案例,该应用能够根据时间动态地绘制出曲线图,具体实现涉及Flex中的...

    flex4 选择树组件

    如果需要自定义,可以设置`labelFunction`属性,指定一个函数来生成节点的显示文本。 4. **节点选择**:Tree组件提供了多种选择模式,如单选或多选。你可以通过`allowMultipleSelection`属性控制是否允许多选,通过...

    Flex中DataGrid和其它控件使用

    1. **LabelField**:DataGrid中的每个单元格默认显示的是数据源中的简单文本,但有时我们可能需要自定义显示内容,这时可以使用LabelField或LabelFunction来实现。 2. **ButtonColumn**:如果需要在DataGrid中添加...

    flex3的cookbook书籍完整版dpf(包含目录)

    设置控件的labelFunction 2.7节. 提供菜单数据 2.8. 动态填充菜单 2.9节. 为菜单类控件创建事件处理函数 2.10节. 显示一个通知窗口 2.11节. 使用Calendar控件 2.12节. 弹出窗口的显示和位置 2.13节. 自定义弹出式...

    Flex数据显示与数据验证

    例如,在DataGridColumn中使用`labelFunction`属性指定一个函数,该函数负责接收数据项并返回格式化后的字符串。 ```xml 电话号码" labelFunction="formatPhoneNumber" /&gt; ``` 下面是一个具体的`formatPhoneNumber...

    flex 映射DataGrid,修改DataGridColumn显示值

    此外,我们还可以为DataGridColumn设置`labelFunction`属性,指向我们自定义的函数: ```xml 选择" width="40" labelFunction="typeLableFunc" /&gt; ``` ### 2. 使用同一函数处理多列 如果多个列需要使用相同的...

    flex学习笔记,技巧学习

    - **`labelFunction`**: 可以通过设置`labelFunction`属性来自定义ComboBox项的显示内容。例如,当需要显示复合数据(如姓名等)时,可以通过编写一个函数来实现这一功能。 ```actionscript private function ...

    一个非常不错的flex时间控件,内附运行图

    一个非常不错的flex时间控件 ()}" labelFunction="selectDateTime" width="150"/&gt; public function selectDateTime(item:Date):String { return item.fullYear + "-" + item.month + "-" + item.dateUTC + ...

    Flex中tree实现的种种细节

    例如,`data`属性用于绑定数据,`labelFunction`可以自定义节点显示的文本,`itemRenderer`则允许我们定制每个节点的外观。另外,`childrenField`属性指定了数据对象中包含子项的字段名,这对于从数据源加载子节点至...

    flex4 dataGrid 日期格式转换

    总结起来,Flex 4中的`DataGrid`通过结合`DateFormatter`和自定义的`labelFunction`可以方便地实现日期格式的转换,使数据显示更加人性化。理解并熟练运用这些技巧,可以提升用户体验,增强应用程序的易用性。

    flex4.5学习笔记

    **知识点19:使用Adobe Flash Catalyst设置Flex应用程序外观** - **工具介绍**: Adobe Flash Catalyst是一种设计工具,用于创建Flex应用程序的用户界面而无需编写代码。 - **外观设计**: 提供直观的设计界面,可以...

    Flex CategoryAxis 字体样式修改

    总的来说,当Flex图表的CategoryAxis需要个性化定制字体样式时,使用`labelFunction`是有效的解决策略。通过对返回的字符串进行操作,我们可以灵活地调整标签的外观,满足界面设计的需求。然而,这也要求开发者对...

Global site tag (gtag.js) - Google Analytics