Flex双轴标注混合动态图表开发

对于企业级应用经常会开发一些动态的图表,基本的就不用说了Flex提供了多种图表,很方便大家完成任务。

这里我就说一下典型的双轴混合动态图表的开发,相信大家在开发过程当中都遇到过这样的问题。

 

此处完全使用AS来实现柱状图与线图的组合,对应的mxml代码也很简单。

 

 

 

var testChart:ColumnChart = new ColumnChart();
				

//				//定义柱对象
				var columS:ColumnSeries = new ColumnSeries();
				columS.displayName = "value";
				columS.yField = "value";

				var seffect:SeriesInterpolate = new SeriesInterpolate();
				seffect.duration = 1000;
				seffect.target = columS;
				columS.addEventListener(Event.ADDED_TO_STAGE,function swqq(e:Event):void
				{
					//播放一个效果
					seffect.play();
				});
				//定义线对象
				var lineS:LineSeries = new LineSeries();
				lineS.displayName = "value1";
				lineS.yField = "value1";
				
				//定义左显示轴刻度
				var vAxisLeft:LinearAxis = new LinearAxis();
				vAxisLeft.interval = 200;
				columS.verticalAxis = vAxisLeft;
				
				//定义类别显示
				var ha:CategoryAxis = new CategoryAxis();
				ha.categoryField = "category";
				
				//定义右显示轴刻度
				var vAxisRight:LinearAxis = new LinearAxis();
				lineS.verticalAxis = vAxisRight;
				
				//左轴刻度渲染及配置
				var renderLift:AxisRenderer = new AxisRenderer()
				renderLift.axis = vAxisLeft;
				renderLift.placement = "left";
				
				//右轴刻度渲染及配置
				var renderRight:AxisRenderer = new AxisRenderer()
				renderRight.axis = vAxisRight;
				renderRight.placement = "right";
				renderRight.labelFunction = customASLabelFunction;
				
				
				//ColumChar对象属性配置
				testChart.horizontalAxis = ha;
				testChart.verticalAxisRenderers = [renderLift,renderRight];
				testChart.dataTipFunction = customDataTipFunction;
				testChart.series = [columS,lineS];
				testChart.dataProvider = charSource;
				testChart.showDataTips = true;
				testChart.width = 600;		
				group.addElement(testChart);

 

public function customASLabelFunction(axisRenderer:IAxisRenderer, label:String):String{
				return label+"%";
			}
			
			public function customDataTipFunction(hitData:HitData):String
			{
				var tempString:String = hitData.element is ColumnSeries?ColumnSeries(hitData.element).displayName:LineSeries(hitData.element).displayName;
				if(tempString == "value")
				{
					return tempString+"\n"+hitData.item.value;
				}
				return tempString+"\n"+hitData.item.value1+"%";
			}

 



protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				time.addEventListener(TimerEvent.TIMER,timer_Hander);
				time.start();
			}
			
			public function timer_Hander(event:TimerEvent):void
			{
				charSource.removeItemAt(0);
				var obj:Object = new Object();
				obj.category = "FY "+(event.currentTarget as Timer).currentCount;
				obj.value = Math.round(Math.random()*4000)+1000;
				obj.value1 = Math.round(Math.random()*100);
				charSource.addItem(obj);
			}



比较简单的实现代码相信根据这个能给你一个实现的思路来解决现实中的问题。

大家如果有问题欢迎一起交流学习。

 

 


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值