动态构建双轴的FLEX报表

本文介绍了一种实现双Y轴折线图的方法,通过解析JSON数据并使用Flex进行图表绘制,展示了如何同时呈现两个维度的数据变化趋势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,客户在原折线报表的基础上又提出了需要展示两个纬度的数据需求。

而且是双Y轴指标。所以花了点功夫写了一个小DOME。

废话不多,上代码。

我们先定义一个数据源。

var jsonStr1:String='{"chartInfo":[{"ptitle":"PieChart示例","xName":"姓名","yName":"时间","valueUnit":"天"}],'+
					'"data":[{"HB":-17.94,"TB":711.8,"COMPANY_ID":"北京","TS_COUNT":500798},'+
					'{"HB":-19.38,"TB":61.32,"COMPANY_ID":"广东","TS_COUNT":2152220},'+
					'{"HB":23.45,"TB":1082.3,"COMPANY_ID":"上海","TS_COUNT":565910 },'+
					'{"HB":-2.83,"TB":976.41,"COMPANY_ID":"天津","TS_COUNT":289651 },'+
					'{"HB":8.33,"TB":625.69,"COMPANY_ID":"重庆","TS_COUNT":453750 },'+
					'{"HB":-6.68,"TB":768.7,"COMPANY_ID":"辽宁","TS_COUNT":922836 },'+
					'{"HB":6.4,"TB":193.79,"COMPANY_ID":"江苏","TS_COUNT":1047326 },'+
					'{"HB":-20.85,"TB":-7.88,"COMPANY_ID":"湖北","TS_COUNT":700200 },'+
					'{"HB":-0.14,"TB":841.24,"COMPANY_ID":"四川","TS_COUNT":329885 },'+
					'{"HB":-4.43,"TB":1013.8,"COMPANY_ID":"陕西","TS_COUNT":563092 },'+
					'{"HB":252.06,"TB":234.48,"COMPANY_ID":"河北","TS_COUNT":217477 },'+
					'{"HB":-16.57,"TB":442.49,"COMPANY_ID":"山西","TS_COUNT":672172 },'+
					'{"HB":25.75,"TB":-19.9,"COMPANY_ID":"河南","TS_COUNT":168895 },'+
					'{"HB":21.16,"TB":178.73,"COMPANY_ID":"吉林","TS_COUNT":1071927 },'+
					'{"HB":-36.24,"TB":47.67,"COMPANY_ID":"黑龙江","TS_COUNT":370784 },'+
					'{"HB":24.61,"TB":178.15,"COMPANY_ID":"内蒙古","TS_COUNT":23579 },'+
					'{"HB":-16.33,"TB":2738.08,"COMPANY_ID":"山东","TS_COUNT":912839 },'+
					'{"HB":-2.02,"TB":1164.05,"COMPANY_ID":"安徽","TS_COUNT":761778 },'+
					'{"HB":9.64,"TB":136.87,"COMPANY_ID":"浙江","TS_COUNT":1294851 },'+
					'{"HB":-19.93,"TB":241.24,"COMPANY_ID":"福建","TS_COUNT":526767 },'+
					'{"HB":-14.78,"TB":929.68,"COMPANY_ID":"湖南","TS_COUNT":742834 },'+
					'{"HB":-9.74,"TB":1738.84,"COMPANY_ID":"广西","TS_COUNT":1048909 },'+
					'{"HB":44.73,"TB":145.85,"COMPANY_ID":"江西","TS_COUNT":285494 },'+
					'{"HB":28.07,"TB":2757.21,"COMPANY_ID":"贵州","TS_COUNT":1005768 },'+
					'{"HB":678.84,"TB":945.37,"COMPANY_ID":"云南","TS_COUNT":418095 },'+
					'{"HB":32.87,"TB":1503.92,"COMPANY_ID":"西藏","TS_COUNT":15542 },'+
					'{"HB":-7.32,"TB":42.62,"COMPANY_ID":"海南","TS_COUNT":53241 },'+
					'{"HB":72.93,"TB":32.44,"COMPANY_ID":"甘肃","TS_COUNT":92703 },'+
					'{"HB":-12.07,"TB":583.65,"COMPANY_ID":"宁夏","TS_COUNT":48471 },'+
					'{"HB":5.24,"TB":3894.36,"COMPANY_ID":"青海","TS_COUNT":88595 },'+
					'{"HB":-18.43,"TB":646.61,"COMPANY_ID":"新疆","TS_COUNT":228536}]}';  
				

然后就是相关具体代码实现
// 将后台传的json数据转换一下
				var objdata:Object=JSON.decode(jsonStr1);
				// 将数据转换为FLEX识别的数组格式
				var arr:Array = (objdata.data as Array);
				var obj:Object = null;
				// 遍历数据,封装到chartDataSouse:ArrayCollection。
				// 在图标中数据源ArrayCollection相比较我熟悉一些
				// 也可以根据自己的需要换为别的类型,例如:xml
				for(var i:int=0;i<arr.length;i++){
					obj = new Object();
					obj.HB = arr[i].HB;
					obj.TB = arr[i].TB;
					obj.COMPANY_ID = arr[i].COMPANY_ID;
					obj.TS_COUNT = arr[i].TS_COUNT;
					chartDataSouse.addItem(obj);
				}
				
				columnChart.percentWidth=100;
				columnChart.percentHeight=100;
				
				// 定义X轴数据
				var ca:CategoryAxis = new CategoryAxis();
				// 设置数据来源
				ca.dataProvider = chartDataSouse;
				// 设置数据取值对象
				ca.categoryField = "COMPANY_ID";
				// 柱状图X周数据
				columnChart.horizontalAxis = ca;
				
				
				// 左边Y轴取值,即投诉总量 这里也让flex自己分配
				//var leftYzhou:LinearAxis = new LinearAxis();
				//leftYzhou.maximum = 2152220;
				//leftYzhou.minimum = 10000;
				//columnChart.verticalAxis = leftYzhou;
				
				var myLineSeries1:Array=new Array();
				
				columnSeries.dataProvider = chartDataSouse;
				columnSeries.xField = "COMPANY_ID";
				columnSeries.yField = "TS_COUNT";
				columnSeries.displayName = "投诉总量";
				
				myLineSeries1.push(columnSeries);
				
				columnChart.series = myLineSeries1;
				
				// 如果需要设置右边Y轴的数据,就如下,如果不需要就让flex自动选择
				//var rightYzhou:LinearAxis = new LinearAxis();
				//rightYzhou.maximum = 700;
				//rightYzhou.minimum = -100;
				//columnChart.secondVerticalAxis = rightYzhou;
				
				
				
				var myLineSeries:Array=new Array();
				
				lineSeries.dataProvider = chartDataSouse;
				lineSeries.xField = "COMPANY_ID";
				lineSeries.yField = "TB";
				lineSeries.displayName = "同比";
				
				myLineSeries.push(lineSeries);
				
				var lineSeries2:LineSeries = new LineSeries();
				lineSeries2.dataProvider = chartDataSouse;
				lineSeries2.xField = "COMPANY_ID";
				lineSeries2.yField = "HB";
				lineSeries2.displayName = "环比";
				
				myLineSeries.push(lineSeries2);
				
				columnChart.secondSeries = myLineSeries;
				columnChart.showDataTips = true;
				chartPanel.addChild(columnChart);
				
				
				columnChart.addEventListener(MouseEvent.MOUSE_DOWN,stopMove);
				columnChart.addEventListener(MouseEvent.MOUSE_MOVE,moveLineChart);
				chartLegend.dataProvider=columnChart;

这样一个双轴的折线图就出来了。



内容概要:本文围绕直流微电网中带有恒功率负载(CPL)的DC/DC升压转换器的稳定控制问题展开研究,提出了一种复合预设性能控制策略。首先,通过精确反馈线性化技术将非线性不确定的DC转换器系统转化为Brunovsky标准型,然后利用非线性扰动观测器评估负载功率的动态变化和输出电压的调节精度。基于反步设计方法,设计了具有预设性能的复合非线性控制器,确保输出电压跟踪误差始终在预定义误差范围内。文章还对比了多种DC/DC转换器控制技术如脉冲调整技术、反馈线性化、滑模控制(SMC)、主动阻尼法和基于无源性的控制,并分析了它们的优缺点。最后,通过数值仿真验证了所提控制器的有效性和优越性。 适合人群:从事电力电子、自动控制领域研究的学者和工程师,以及对先进控制算法感兴趣的研究生及以上学历人员。 使用场景及目标:①适用于需要精确控制输出电压并处理恒功率负载的应用场景;②旨在实现快速稳定的电压跟踪,同时保证系统的鲁棒性和抗干扰能力;③为DC微电网中的功率转换系统提供兼顾瞬态性能和稳态精度的解决方案。 其他说明:文中不仅提供了详细的理论推导和算法实现,还通过Python代码演示了控制策略的具体实现过程,便于读者理解和实践。此外,文章还讨论了不同控制方法的特点和适用范围,为实际工程项目提供了有价值的参考。
内容概要:该论文介绍了一种名为偏振敏感强度衍射断层扫描(PS-IDT)的新型无参考三维偏振敏感计算成像技术。PS-IDT通过多角度圆偏振光照射样品,利用矢量多层光束传播模型(MSBP)和梯度下降算法迭代重建样品的三维各向异性分布。该技术无需干涉参考光或机械扫描,能够处理多重散射样品,并通过强度测量实现3D成像。文中展示了对马铃薯淀粉颗粒和缓步类动物等样品的成功成像实验,并提供了Python代码实现,包括系统初始化、前向传播、多层传播、重建算法以及数字体模验证等模块。 适用人群:具备一定光学成像和编程基础的研究人员,尤其是从事生物医学成像、材料科学成像领域的科研工作者。 使用场景及目标:①研究复杂散射样品(如生物组织、复合材料)的三维各向异性结构;②开发新型偏振敏感成像系统,提高成像分辨率和对比度;③验证和优化计算成像算法,应用于实际样品的高精度成像。 其他说明:PS-IDT技术相比传统偏振成像方法具有明显优势,如无需干涉装置、无需机械扫描、可处理多重散射等。然而,该技术也面临计算复杂度高、需要多角度数据采集等挑战。文中还提出了改进方向,如采用更高数值孔径(NA)物镜、引入深度学习超分辨率技术等,以进一步提升成像质量和效率。此外,文中提供的Python代码框架为研究人员提供了实用的工具,便于理解和应用该技术。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值