`
Majesty123456
  • 浏览: 6743 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Flex复杂倒柱状图

 
阅读更多


  flex 共X轴图使用拼接效果图:如下




代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   width="100%" height="100%" creationComplete="initDatas()"
			   xmlns:draw="draw.*">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import flash.external.ExternalInterface;
			
			import mx.charts.events.ChartItemEvent;
			import mx.charts.series.items.ColumnSeriesItem;
			import mx.charts.series.items.LineSeriesItem;
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.core.FlexGlobals;
			import mx.rpc.events.ResultEvent;
			
			[Bindable]
			private var c1_ytitle:String="A";
			
			[Bindable]
			private var c2_ytitle:String="B";
			
			[Bindable]
			private var lc_xtitle:String="X";
			[Bindable]
			private var lc_ytitle:String="C1";
			[Bindable]
			private var lc_y2title:String="C2";
			
			[Bindable]
			private var viewId:String;
			
			[Bindable]
			private var resultArr:ArrayCollection = new ArrayCollection;
			
			private var column1Data:ArrayCollection = new ArrayCollection;
			
			private var column2Data:ArrayCollection = new ArrayCollection;
			
			private var lineChartData:ArrayCollection = new ArrayCollection;
			
			
			
			private function init():void{
				
				ExternalInterface.addCallback("optStrokeClick",optStrokeClick);
				//获取数据
				var pattern:RegExp = /#@/g;
				
				var c1Data:XML =  new XML(FlexGlobals.topLevelApplication.parameters["c1XmlData"].toString().replace(pattern, "\""));
				
				var c2Data:XML =  new XML(FlexGlobals.topLevelApplication.parameters["c2XmlData"].toString().replace(pattern, "\""));
				
				var lcData:XML =  new XML(FlexGlobals.topLevelApplication.parameters["lcXmlData"].toString().replace(pattern, "\""));
				if(c1Data.toString().length>0){
				   xmlcheck(c1Data);
				}
				if(c2Data.toString().length>0){
				   xmlcheck(c2Data);
				} 
				if(lcData.toString().length>0){
				   xmlcheck(lcData);
				}
				
			}
			
			//测试
			private function initDatas():void{
				ExternalInterface.addCallback("optStrokeClick",optStrokeClick);
				
				getDatasRequest.url = "config/c2ahsyb.xml";
				
				getDatasRequest.send();	
				
				getDatasRequestcy.url = "config/c2ahsybcy.xml";
				
				getDatasRequestcy.send();
				
				getDatasRequestxy.url = "config/c2ahsybxy.xml";
				
				getDatasRequestxy.send();
			}
			
			
			protected function getDatasRequestResult(event:ResultEvent):void
			{
				var lcData:XML  = XML(event.message.body.toString());
				
				xmlcheck(lcData);	
			}
			
			
			function optStrokeClick(stroke:String,visible:String){
				
				//	Alert.show(stroke);
				var series:Array = linechart.series;
				var ls:LineSeries;
				for(var i:int = 0; i < series.length; i++) { 
					ls = series[i]; 
					if(stroke == ls.id){
						if("yes"==visible){
							ls.visible = true;
						}else{
							ls.visible = false;
						}
						break;
						return;
					}
				} 
				
			}
			
			private function xmlcheck(xml:XML):void{
				viewId = xml.attribute("viewId");
				var type:String = xml.attribute("chartType");
				if("flood" == type){
//					label.text = xml.attribute("label");
					
					xml2Array(xml,lineChartData,type);
				}else if("allRain" == type){
					xml2Array(xml,column1Data,type);
				}else if("netRain" == type){
					xml2Array(xml,column2Data,type);
				}
			}
			
			function xml2Array(xml:XML,array:ArrayCollection,type:String):void{
				array.removeAll();
				if("flood" == type){
					for each(var element:XML in xml.descendants("item")) {
						var o:Object = new Object();
						o.oid = element.@oid;
						o.type = xml.attribute("chartType");
						o.xfield = element.@xfield;
						o.yfield = element.@yfield;
						o.y2field = element.@y2field;
						o.y3field = element.@y3field;
						
						array.addItem(o);
					}
				}else{
					for each(var element:XML in xml.descendants("item")) {
						var o:Object = new Object();
						o.oid = element.@oid;
						o.type = xml.attribute("chartType");
						o.xfield = element.@xfield;
						o.yfield = element.@yfield;
						array.addItem(o);
					}
				}
			}
			
			
			
			protected function itemClickHandler(event:ChartItemEvent):void
			{
				var psi:LineSeriesItem= event.hitData.chartItem as LineSeriesItem;
				var lss:LineSeries = psi.element as LineSeries;
//				Alert.show(viewId+"---"+psi.item.xfield+"--"+psi.item.yfield+"-"+psi.item.y2field+"-"+psi.item.y3field);
				var xf:String = psi.item.xfield;
				ExternalInterface.call("pointClick",viewId,psi.item.yfield,psi.item.y2field,psi.item.y3field,xf.split("-"));	
//				optStrokeClick("hr5","yes");
//				damtophigh = 800;
				
			}
			
			private function dataTipFunc(item:Object):String { 
				var curObj:Object = item.item;
				var curSeries:Object = Object(item.chartItem.element); 
				var str:String = "";
				if(curSeries.displayName == "降雨"){
					var cSI1:ColumnSeriesItem = item.chartItem as ColumnSeriesItem;
					str =  "<font>"+lc_xtitle+":"+cSI1.xValue.toString()+ "<br>";
					str += curSeries.displayName+":"+(-Number(cSI1.yValue)).toString();
					str+="</font>";
				}else if(curSeries.displayName == "净雨"){
					var cSI1:ColumnSeriesItem = item.chartItem as ColumnSeriesItem;
					str =  "<font>"+lc_xtitle+":"+cSI1.xValue.toString()+ "<br>";
					str += curSeries.displayName+":"+cSI1.yValue.toString();
					str+="</font>";
				}else{
					var cSI:LineSeriesItem = item.chartItem as LineSeriesItem;
					str =  "<font>"+lc_xtitle+":"+cSI.xValue.toString()+ "<br>";
					str += curSeries.displayName+":"+cSI.yValue.toString();
					str+="</font>";
				}
				return str;
			}
			
			private function categoryAxisLabelFun(categoryValue:Object, previousCategoryValue:Object, axis:CategoryAxis, categoryItem:Object):String { 
 
				 var kk:Array = categoryValue.toString().split(" ");
		
//				  return  '<I>' + categoryValue  + '</I>';
				 
				 return  '<I>' + kk[1] + '</I>';
			} 
			
			private function parseToDate(s:String):Date{
				//s = "2007-10-15 20:15"
				var temp:Array = s.split(" ");
				var datepart:String = temp[0];
				var datearray:Array = datepart.split("-");
				var timepart:String = temp[1];
				var timearray:Array = timepart.split(":");
				var newDate:Date = new Date(datearray[0],datearray[1],datearray[2],timearray[0],timearray[1]);
				return newDate;
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<mx:HTTPService id="getDatasRequest" method="POST" result="getDatasRequestResult(event)"/>
		<mx:HTTPService id="getDatasRequestcy" method="POST" result="getDatasRequestResult(event)"/>
		<mx:HTTPService id="getDatasRequestxy" method="POST" result="getDatasRequestResult(event)"/>
		<mx:SolidColor id="sc1" color="0xCCFFF0" alpha=".8"/>
		<mx:SolidColor id="sc2" color="0xCC00CC" alpha=".6"/>
		<mx:SolidColor id="sc3" color="0xFFCC66" alpha=".6"/>
		
		<mx:Stroke id="s1" color="0xCCCC00" weight="1" />
		<mx:Stroke id="s2" color="0xCAAACC" weight="1"/>
		<mx:Stroke id="s3" color="0xFFCC66" weight="1"/>
		
		<mx:SolidColorStroke id="scs1" color="0x1CF000" weight="1" />
	</fx:Declarations>
	<mx:VBox width="100%" height="100%" verticalGap="0" verticalAlign="middle" horizontalAlign="center">
		<mx:HBox width="100%" height="30" backgroundColor="#ffffff" horizontalAlign="center" verticalAlign="middle">
			<mx:Label id="label" text="调度过程线" color="#f05caa" fontSize="20"/>
		</mx:HBox>
		<mx:HBox width="100%" height="20%" backgroundColor="#ffffff">
			<mx:ColumnChart id="column1" 
							height="100%" 
							width="92%" 
							fontSize="12"
							showDataTips="true" 
							seriesFilters="[]"
							dataTipFunction="dataTipFunc"
							dataProvider="{column1Data}" 
							>               
				<mx:backgroundElements>
					<mx:GridLines id="cgridLines1"
								  gridDirection="horizontal"
								  verticalTickAligned="false">
						<mx:verticalStroke>
							<mx:Stroke color="haloSilver"
									   weight="0"
									   alpha="1.0" />
						</mx:verticalStroke>
						<mx:horizontalStroke>
							<mx:Stroke color="white"
									   weight="0"
									   alpha="0.0" />
						</mx:horizontalStroke>
						<mx:horizontalFill>
							<mx:SolidColor color="haloSilver"
										   alpha="0.1" />
						</mx:horizontalFill>
					</mx:GridLines>
				</mx:backgroundElements>
				<mx:horizontalAxis>
					<mx:CategoryAxis id="chaxis1" categoryField="xfield" />
				</mx:horizontalAxis>
				<mx:horizontalAxisRenderers>
					<mx:AxisRenderer id="chorAxisRend1" 
									 axis="{chaxis1}" 
									 axisStroke="{s2}"
									 tickStroke="{s2}"
									 placement="top"
									 showLabels="false"
									 />
				</mx:horizontalAxisRenderers>
				<mx:verticalAxisRenderers>
					<mx:AxisRenderer id="cvertAxisRend1"
									 axis="{cvaxis1}"
									 axisStroke="{scs1}"
									 tickStroke="{scs1}"
									 placement="left" />
				</mx:verticalAxisRenderers>  
				<mx:series>
					<mx:ColumnSeries
						xField="xfield" 
						yField="yfield" 
						displayName="{c1_ytitle}"
						fill="{sc1}"
						stroke="{s1}"
						fontSize="12"
						>
						<mx:verticalAxis>
							<mx:LinearAxis id="cvaxis1" title="{c1_ytitle}" direction="inverted"/>
						</mx:verticalAxis>
					</mx:ColumnSeries>
				</mx:series>
			</mx:ColumnChart>

		</mx:HBox>
		<mx:HBox width="100%" height="20%" backgroundColor="#ffffff">
			<mx:ColumnChart id="column2" 
							height="100%" 
							width="92%" 
							fontSize="12"
							showDataTips="true" 
							seriesFilters="[]"
							dataTipFunction="dataTipFunc"
							dataProvider="{column2Data}"
							>               
				<mx:backgroundElements>
					<mx:GridLines id="cgridLines2"
								  gridDirection="horizontal"
								  verticalTickAligned="false">
						<mx:verticalStroke>
							<mx:Stroke color="haloSilver"
									   weight="0"
									   alpha="1.0" />
						</mx:verticalStroke>
						<mx:horizontalStroke>
							<mx:Stroke color="blue"
									   weight="1"
									   alpha="0.0" />
						</mx:horizontalStroke>
						<mx:horizontalFill>
							<mx:SolidColor color="haloSilver"
										   alpha="0.1" />
						</mx:horizontalFill>
					</mx:GridLines>
				</mx:backgroundElements>
				<mx:horizontalAxis>
					<mx:CategoryAxis id="chaxis2" categoryField="xfield" />
				</mx:horizontalAxis>
				<mx:horizontalAxisRenderers>
					<mx:AxisRenderer id="chorAxisRend2" 
									 axis="{chaxis2}" 
									 axisStroke="{s2}"
									 tickStroke="{s2}"
									 placement="bottom"
									 showLabels="false"
									 />
				</mx:horizontalAxisRenderers>
				<mx:verticalAxisRenderers>
					<mx:AxisRenderer id="cvertAxisRend2"
									 axis="{cvaxis2}" 
									 axisStroke="{scs1}"
									 tickStroke="{scs1}"
									 placement="left" />
				</mx:verticalAxisRenderers>  
				<mx:series>
					<mx:ColumnSeries
						xField="xfield" 
						yField="yfield" 
						displayName="{c2_ytitle}"
						fill="{sc1}"
						stroke="{s1}"
						fontSize="12"
						>
						<mx:verticalAxis>
							<mx:LinearAxis id="cvaxis2" title="{c2_ytitle}" direction="normal"/>
						</mx:verticalAxis>
					</mx:ColumnSeries>
				</mx:series>
			</mx:ColumnChart>
			
		</mx:HBox>
		<mx:VBox width="100%" height="60%" backgroundColor="#ffffff">
			<mx:CartesianChart id="linechart" 
							   width="{column1.width+60}"
							   height="100%"
							   fontSize="12"
							   showDataTips="true"
							   seriesFilters="[]"
							   dataTipFunction="dataTipFunc"
							   dataProvider="{lineChartData}" 
							   itemClick="itemClickHandler(event)"

                               >
				<mx:backgroundElements>
					<mx:GridLines id="gridLines"
								  gridDirection="horizontal"
								  verticalTickAligned="false">
						<mx:verticalStroke>
							<mx:Stroke color="haloSilver"
									   weight="1"
									   alpha="1.0" />
						</mx:verticalStroke>
						<mx:horizontalStroke>
							<mx:Stroke color="white"
									   weight="1"
									   alpha="0.0" />
						</mx:horizontalStroke>
						<mx:horizontalFill>
							<mx:SolidColor color="haloSilver"
										   alpha="0.1" />
						</mx:horizontalFill>
					</mx:GridLines>
				</mx:backgroundElements>
				<mx:horizontalAxis>
					<mx:CategoryAxis id="haxis"
									 dataProvider="{lineChartData}" 
									 categoryField="xfield"
									 labelFunction="categoryAxisLabelFun"
									 />
				</mx:horizontalAxis>
				<mx:horizontalAxisRenderers>
					<mx:AxisRenderer id="horAxisRend3" 
									 axis="{haxis}" 
									 axisStroke="{scs1}"
									 showLine="true" 
									 minWidth="1"
									 minorTickPlacement="cross"
									 tickLength="2"
									 tickStroke="{scs1}"
									 canDropLabels="true"
									 labelAlign="center"
									 placement="bottom"
									
									 />
				</mx:horizontalAxisRenderers>
				<mx:verticalAxisRenderers>
					<mx:AxisRenderer id="vertAxisRend"
									 axis="{vaxis1}" 
									 axisStroke="{scs1}"
									 tickStroke="{scs1}"
									 verticalAxisTitleAlignment="vertical"
									 placement="left" />
					<mx:AxisRenderer id="vertAxisRend2"
									 axis="{vaxis2}" 
									 axisStroke="{scs1}"
									 tickStroke="{scs1}"
									 placement="right"/>
				</mx:verticalAxisRenderers>  
				<mx:series>
					<mx:LineSeries id="yfield" yField="yfield" xField="xfield" radius="3"  form="curve" displayName="S1" lineStroke="{s1}">
						<mx:verticalAxis>
							<mx:LinearAxis id="vaxis1" title="{lc_ytitle}"/>
						</mx:verticalAxis>
					</mx:LineSeries>
					<mx:LineSeries id="y2field" yField="y2field" xField="xfield" radius="3"  form="curve" displayName="S2" lineStroke="{s2}">
						<mx:verticalAxis>
							<mx:LinearAxis id="vaxis2" title="{lc_y2title}"/>
						</mx:verticalAxis>
					</mx:LineSeries>
					<mx:LineSeries id="y3field" yField="y3field" xField="xfield"  form="curve" displayName="S3" lineStroke="{s3}">
						<mx:verticalAxis>
							<mx:LinearAxis id="vaxis3" title="{lc_y2title}"/>
						</mx:verticalAxis>
					</mx:LineSeries>
				</mx:series>
			</mx:CartesianChart>
			<mx:VBox id="legendbox3" width="100%" height="25" horizontalAlign="center">
				<mx:Legend dataProvider="{linechart}" id="legend" direction="horizontal" />
			</mx:VBox>
		</mx:VBox>
	</mx:VBox>
</s:Application>

 

  • 大小: 63.1 KB
分享到:
评论

相关推荐

    flex拖拽形成柱状图,点击弹出图片窗口,柱状图用法

    在本文中,我们将深入探讨如何使用Adobe Flex技术创建一个具有拖拽功能的柱状图,以及如何实现点击柱状图后弹出图片窗口的功能。Flex是一个开源的、基于ActionScript的框架,主要用于构建富互联网应用程序(RIA)。...

    FLEX画图之各种柱状图饼状图画法

    在本文中,我们将深入探讨如何使用Adobe Flex技术来创建各种柱状图和饼状图。Flex是一个基于ActionScript和MXML的开源框架...无论是简单的柱状图还是复杂的环形分块图,Flex都能够胜任,使得数据的呈现更加直观和生动。

    flex 统计,柱状图,饼图。

    总的来说,Flex提供了一套强大的图表组件,使得开发者能够轻松地创建出美观且功能丰富的柱状图和饼图,以直观地呈现复杂的数据。通过熟练掌握这些组件的使用,可以提升数据可视化的专业度,帮助用户更好地理解和解析...

    Flex漂亮的柱状图(ColumnChart)

    6. **其他高级特性**:Flex的柱状图还可以进行更复杂的数据分组、堆叠、百分比表示等。此外,你还可以添加工具提示、图例、轴标签等元素来增强图表的可读性。 通过研究提供的"columnChart"项目源代码,你可以了解到...

    flex倒立柱状图

    3. **Chart组件**: Flex框架内置了多种图表组件,如BarChart,我们可以在此基础上进行定制,创建倒立柱状图。 4. **数据绑定**: 在Flex中,可以通过数据绑定将数据源直接连接到图表,简化了数据更新和图表渲染的...

    多款风格的Flex的Demo、柱状图、饼图、折线图等

    在这个压缩包中,包含了一系列的Flex Demo,涵盖了不同的图表类型,如柱状图、饼图和折线图,这些都是数据可视化的常用工具。 首先,让我们来详细了解一下Flex中的图表组件。Flex提供了强大的图表组件库,允许...

    flex做的柱状图,动态显示效果

    在Flex中,我们可以利用MX图表组件库来创建柱状图,这个库包含了多种图表类型,如条形图(BarChart)、柱状图(ColumnChart)等。这些图表能够以直观的方式展示数据,帮助用户快速理解和分析信息。 动态显示效果是...

    用arcgis for flex 在地图上显示柱状图 饼状图和折线图

    本教程将深入讲解如何利用ArcGIS for Flex在地图上显示柱状图、饼状图和折线图,以便于用户更直观地理解地理数据。 首先,我们需要了解ArcGIS for Flex的基本概念。ArcGIS for Flex是一个基于Adobe Flex的开发库,...

    socket及flex饼图,柱状图,面积图实例

    在Flex中,可以使用各种图表组件来自定义数据可视化,如饼图、柱状图和面积图。 对于饼图,Flex提供了mx.charts.PieChart类。饼图是一种以圆形表示整体,并用扇形部分表示各个部分占比的图表。开发者可以设定数据...

    flex统计图 柱状 饼图折线

    通过学习和实践这些Flex图表的基本知识,你可以创建出各种复杂的统计图,以有效地展示和解释数据。文件"flex统计图 柱状 饼图折线"可能包含了实现这些图表的示例代码,通过研究这些代码,你可以更深入地理解如何在...

    Flex漂亮的柱状图,横坐标倾斜45度显示amChart

    标题中提到的"Flex漂亮的柱状图,横坐标倾斜45度显示amChart",意味着我们将探讨如何在Flex中利用amChart库创建出具有倾斜横坐标轴的柱状图,同时保持良好的视觉效果和字符完整性,即使横坐标标签很长。 首先,让...

    Flex 饼状、柱状、实时曲线图

    本篇将深入探讨Flex中的饼状图、柱状图以及实时曲线图的实现方法和相关知识点。 一、Flex饼状图 饼状图是一种用于表示部分与整体之间关系的图形。在Flex中,我们可以使用mx.charts.PieChart类来创建饼状图。每个...

    Flex画饼状、柱状图资料参考

    ### Flex绘制饼状图与柱状图的知识点 #### Flex简介 Flex是一种开源的软件框架,主要用于构建跨浏览器、跨平台的应用程序。它基于ActionScript 3.0,支持多种编程语言,包括ActionScript和MXML。Flex拥有丰富的组件...

    Flex4中使用组件添加柱状图、饼状图等图表

    根据提供的文件信息,本文将详细介绍如何在Flex4中利用组件添加柱状图、饼状图等图表,并通过示例代码具体展示实现过程。 ### 一、Flex4中的柱状图 #### 1.1 柱状图简介 在Flex4中,柱状图是一种非常常见的数据...

    flex绘制的3d柱状体图形

    在本案例中,我们关注的是Flex用于创建3D柱状体图形的技术。3D柱状图是一种数据可视化工具,它能有效地展示分类数据的大小或数量,通过在Z轴上增加深度来呈现三维效果,从而提供更丰富的视觉体验。 在Flex中实现3D...

    flex统计图标实例,饼状图,柱状图,折线图

    在本压缩包文件"Charts"中,我们聚焦于Flex中的统计图表功能,包括饼状图、柱状图和折线图的实例。这些图表是数据可视化的重要工具,帮助用户直观地理解复杂的数据信息。 饼状图在统计学中被广泛用于显示部分与整体...

    Flex制作的几款漂亮的立体柱状图饼状图和折线图

    在给定的资源中,"Flex制作的几款漂亮的立体柱状图饼状图和折线图"显然涉及到Flex的图表组件,这些组件允许开发者创建出具有专业视觉效果的数据可视化应用。 在Flex中,Chart类是用于展示数据的主要组件。它可以...

    flex 报表开发 基础的柱状图应用 可运行

    很基础的柱状图应用 做报表的可以参考下 可运行

    flex柱状图动态切换数据源实例

    该flex应用程序演示了柱状图动态切换数据源 (event)"&gt; 苹果" yField="apple" click="columnseries1_clickHandler(event)"/&gt; 桔子" yField="orange" /&gt; &lt;!--梨" yField="pear"/&gt;--&gt; ...

    flex +jfreechart生成 饼状图+曲线图+柱状图(完整版)

    Flex是一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA),而JFreeChart则是一个Java库,专门用于生成高质量的图表,包括饼状图、柱状图和曲线图等。 在Flex中,我们通常使用MXML和...

Global site tag (gtag.js) - Google Analytics