`
fantasy
  • 浏览: 507393 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

图表组件设计思路

    博客分类:
  • Java
阅读更多
  从项目经历来分析,客户经常会需要各种图表来分析网络现状及业务影响,导致我们针对于不同的项目会要定制开发不同的图表,而这部分图表大部分不能产品化。

  从技术角度分析,往往一个图表涉及到多个模块,考虑到松耦合,各个模块自己封装自己的接口,而最终需要组合不同模块的接口来获取图表需要的数据。

  从重复造轮子的角度分析,业内的报表组件都比较庞大,且使用他们的实施成本和集成成本比较大,如皮肤的一致性,实施的时候多几项配置。

  为了能够提高开发图表的效率,节约研发成本,所以有必要开发一个轻量级的图表组件。

  图表组件的设计思路为输入为SQL语句,JavaBean。 输出为各种图表或表格。

  附件是初略的设计,主要是描述了下设计思路,涉及到很多细节问题未深入设计,欢迎拍砖!
  • 图表组件.zip (292.3 KB)
  • 描述: 图表组件设计-office2007版本
  • 下载次数: 667
分享到:
评论
37 楼 ppgunjack 2011-06-10  
web chart未来的方向应该是SVG,与js,dom结合更天然,flash一类的可以用来过度
自己做完整组件,js级的dataset实现是有一定必要的,公司愿意做这种基础库肯下血本可以考虑弄funsion chart的源码研究吧
google chart不能去依赖这种东西,但它把数据放在请求中,用service生成图像这种设计思想也是很好的,也可以扩展到生成交互式的矢量图,这样的系统集成也会很容易,api极度简化
36 楼 melin 2011-06-09  
这个设计更没写一样
35 楼 dickluo 2011-06-09  
非常好 正在找这个资料
33 楼 windFeng 2010-11-05  
图表以前做的比较少,正好可以学习下
32 楼 littleJava 2010-11-05  
我们做web图表展示的时候也是通过FusionChart实现的数据轮询,动态展示的,流程和这个类似
31 楼 fantasy 2010-11-05  
cloudzhj 写道
flex作报表挺好,加入flash还不如flex

恩,目前Flex自带的报表组件的效果和样式都不是很绚丽,需要自己手动去实现。
曾经因项目需要统一样式,我花了点时间将flex的报表效果做得和FusionCharts一样,但是这样成本太高。
30 楼 fantasy 2010-11-05  
hellostory 写道
最近也在做公司的一个报表查询系统,前台主要用Flash图表展示(使用FashionCharts),配合简单的表格。领导要求以后可以在前台任意添加修改报表。因此将报表的数据源等配置信息存放在数据表中,而前台Falsh展示配置使用XML文件,用户可以随时修改,如指定数据表的那个字段为X轴等

后台数据源是从数据库中查询出来的,每张报表对应一条配置记录。数据表中有一个字段存放查询SQL语句(如
select CLASS,FieldA,FieldB from T1
),而Flash的XML文件则指定查询结果集的哪个字段作为X轴上的一个系列等

报表配置文件如下:
<graph caption="材料采购分析图"
	xaxisname="类别"
	yxisName="金额"
	showValues='0'
	rotateNames='0'
	formatNumberScale='0'
	baseFontSize="12">
	<categories fieldName="CLASS" font="宋体" fontSize="14" fontColor="000000">
	</categories>
	<dataset fieldName="FieldA" seriesname="本月采购额"></dataset>
	<dataset fieldName="FieldB" seriesname="去年同期采购额"></dataset>
</graph>

其中属性“fieldName”表示引用SQL查询结果集中的哪个字段的系列值。
用户查询时,系统将根据查询结果数据,结合上面的XML文件,填充为一份完整的XML数据文件,然后传递到前台页面Flash显示

后台根据查询结果集,并根据前面的XML配置文件规则,自动生成如下完整的报表数据XML文件:
<graph caption='材料采购分析图' xaxisname="类别" yaxisname="金额" 
	rotateNames='0'					
	rotateYAxisName='0'
	formatNumberScale="0"
	baseFontSize="12">
	<categories fieldName="CLASS"  font="宋体" fontSize="14" fontColor="000000">
	  <category label="材料一" /> 
	  <category label="材料二" /> 
	  <category label="材料三" /> 
	  <category label="材料四" />
	</categories>
	<dataset fieldName="FieldA" seriesname="本月采购额">
		  <set value="100" /> 
		  <set value="200" /> 
		  <set value="300" /> 
		  <set value="220" /> 
	</dataset>
	<dataset fieldName="FieldB" seriesname="去年同期采购额">
		<set value="200" />
		<set value="150" />
		<set value="400" />
		<set value="200" />
	</dataset>
</graph>


这个报表还有待完善的地方:
1、首先需要制作一个向导页面,引导用户对Flash进行配置,最终生成一个报表配置文件(见第一个XML文件)
2、其他略



这个很不错,思路比较清晰。借鉴了!
29 楼 cloudzhj 2010-11-05  
flex作报表挺好,加入flash还不如flex
28 楼 javaDance 2010-11-04  
既然讲究通用性,当然要做的很通用,觉得一开始的切入点就有问题哦,那如果是用NOSQL怎么办呢?呵呵,个人认为你这也不是就像Jfreechart一样在造轮子么?
27 楼 yunzhongxia 2010-11-04  
fantasy 写道
  从项目经历来分析,客户经常会需要各种图表来分析网络现状及业务影响,导致我们针对于不同的项目会要定制开发不同的图表,而这部分图表大部分不能产品化。

  从技术角度分析,往往一个图表涉及到多个模块,考虑到松耦合,各个模块自己封装自己的接口,而最终需要组合不同模块的接口来获取图表需要的数据。

  从重复造轮子的角度分析,业内的报表组件都比较庞大,且使用他们的实施成本和集成成本比较大,如皮肤的一致性,实施的时候多几项配置。

  为了能够提高开发图表的效率,节约研发成本,所以有必要开发一个轻量级的图表组件。

  图表组件的设计思路为输入为SQL语句,JavaBean。 输出为各种图表或表格。

  附件是初略的设计,主要是描述了下设计思路,涉及到很多细节问题未深入设计,欢迎拍砖!


FusionCharts是可以保存为图片的。因此不需要JFreeChart,FusionCharts我很早前就用了,可以保存图片的,api里面就有。
26 楼 wslfh2008 2010-11-04  
回复:hellostory
这种方法不错,个人比较支持
25 楼 pangyi 2010-11-04  
可否采用数据仓库的思想抽象出万能模型来设计?
24 楼 pangyi 2010-11-04  
直接用SQL语句来配置,是不是过于复杂了?
23 楼 hellostory 2010-11-04  
最近也在做公司的一个报表查询系统,前台主要用Flash图表展示(使用FashionCharts),配合简单的表格。领导要求以后可以在前台任意添加修改报表。因此将报表的数据源等配置信息存放在数据表中,而前台Falsh展示配置使用XML文件,用户可以随时修改,如指定数据表的那个字段为X轴等

后台数据源是从数据库中查询出来的,每张报表对应一条配置记录。数据表中有一个字段存放查询SQL语句(如
select CLASS,FieldA,FieldB from T1
),而Flash的XML文件则指定查询结果集的哪个字段作为X轴上的一个系列等

报表配置文件如下:
<graph caption="材料采购分析图"
	xaxisname="类别"
	yxisName="金额"
	showValues='0'
	rotateNames='0'
	formatNumberScale='0'
	baseFontSize="12">
	<categories fieldName="CLASS" font="宋体" fontSize="14" fontColor="000000">
	</categories>
	<dataset fieldName="FieldA" seriesname="本月采购额"></dataset>
	<dataset fieldName="FieldB" seriesname="去年同期采购额"></dataset>
</graph>

其中属性“fieldName”表示引用SQL查询结果集中的哪个字段的系列值。
用户查询时,系统将根据查询结果数据,结合上面的XML文件,填充为一份完整的XML数据文件,然后传递到前台页面Flash显示

后台根据查询结果集,并根据前面的XML配置文件规则,自动生成如下完整的报表数据XML文件:
<graph caption='材料采购分析图' xaxisname="类别" yaxisname="金额" 
	rotateNames='0'					
	rotateYAxisName='0'
	formatNumberScale="0"
	baseFontSize="12">
	<categories fieldName="CLASS"  font="宋体" fontSize="14" fontColor="000000">
	  <category label="材料一" /> 
	  <category label="材料二" /> 
	  <category label="材料三" /> 
	  <category label="材料四" />
	</categories>
	<dataset fieldName="FieldA" seriesname="本月采购额">
		  <set value="100" /> 
		  <set value="200" /> 
		  <set value="300" /> 
		  <set value="220" /> 
	</dataset>
	<dataset fieldName="FieldB" seriesname="去年同期采购额">
		<set value="200" />
		<set value="150" />
		<set value="400" />
		<set value="200" />
	</dataset>
</graph>


这个报表还有待完善的地方:
1、首先需要制作一个向导页面,引导用户对Flash进行配置,最终生成一个报表配置文件(见第一个XML文件)
2、其他略


22 楼 wslfh2008 2010-11-04  
fantasy 写道
wslfh2008 写道
fantasy 写道
wslfh2008 写道
我觉得FusionCharts抽取出一个公用方法就可以了,用SQL的话不通用,你的X轴和Y轴不好定,对多系列也不方便

从数据分析里,已经说明了使用SQL可以实现单系列和多系列图,而多系列需要做一次数据分析。为什么X轴和Y轴不好定,能详细说说吗?

比如X轴和Y轴是可以互换的,你现在能实现它们的互换吗?恐怕还要做一些工作吧,所以不如提供JAVABEAN,说明以哪列为X,Y是哪些元素或者字段,当然还有双Y的情况你是怎么考虑实现的?

对的。我觉得输入SQL,JAVA bean或者XML都可以。在SQL作为输入的情况下,要支持X,Y呼唤就必须在输入的时候增加额外配置信息作为输入,如哪一列是X,哪一列是Y.包括X,Y列的中文描述信息,都必须作为配置信息输入。
双Y是在什么应用场景下会出现?

嗯,双Y就是两个Y轴的情况,一搬是两个单位的情况下,比如金额和数量,那么是金额的就以左右为参考,数量的就以右边为参考
21 楼 fantasy 2010-11-04  
wslfh2008 写道
fantasy 写道
wslfh2008 写道
我觉得FusionCharts抽取出一个公用方法就可以了,用SQL的话不通用,你的X轴和Y轴不好定,对多系列也不方便

从数据分析里,已经说明了使用SQL可以实现单系列和多系列图,而多系列需要做一次数据分析。为什么X轴和Y轴不好定,能详细说说吗?

比如X轴和Y轴是可以互换的,你现在能实现它们的互换吗?恐怕还要做一些工作吧,所以不如提供JAVABEAN,说明以哪列为X,Y是哪些元素或者字段,当然还有双Y的情况你是怎么考虑实现的?

对的。我觉得输入SQL,JAVA bean或者XML都可以。在SQL作为输入的情况下,要支持X,Y呼唤就必须在输入的时候增加额外配置信息作为输入,如哪一列是X,哪一列是Y.包括X,Y列的中文描述信息,都必须作为配置信息输入。
双Y是在什么应用场景下会出现?
20 楼 wslfh2008 2010-11-04  
fantasy 写道
wslfh2008 写道
我觉得FusionCharts抽取出一个公用方法就可以了,用SQL的话不通用,你的X轴和Y轴不好定,对多系列也不方便

从数据分析里,已经说明了使用SQL可以实现单系列和多系列图,而多系列需要做一次数据分析。为什么X轴和Y轴不好定,能详细说说吗?

比如X轴和Y轴是可以互换的,你现在能实现它们的互换吗?恐怕还要做一些工作吧,所以不如提供JAVABEAN,说明以哪列为X,Y是哪些元素或者字段,当然还有双Y的情况你是怎么考虑实现的?
19 楼 蛋饭123 2010-11-04  
支持一下,刚开始做软件开发。找不到合适的描述思路软件
18 楼 chenlixun 2010-11-04  
感觉你设计这东西没有明确的目标。

那我提几点需求:
1、支持输入SQL,输出图片/FLASH;
2、支持输入XML,输出图片/FLASH;
3、支持输入MDX,输出图片/FLASH;

先就这几点吧。

相关推荐

    haloe-design-master

    历史积累 紧贴公司云改,经过7年积累,移动云设计组件库生态建设机制完善,目前已有一套WEB端组件库、一套WEB业务模版、一套移动端组件库、一套移动端业务模版、ICON组件库、图表组件库。当前,开源的组件为桌面端...

    各种可视化数据大屏设计

    4、为了给设计师提供灵感的参照案例,可以更大程度的解决设计思路问题; 5、每个案例结合自身的展示情况,使得数据可视化更直接。不同的背景,不同的场景使用,展现的效果也不一样; 6、源代码全程奉上,可以根据...

    vue-cli人力资源系统

    页面布局与组件设计:利用ElementUI的组件库设计页面的基本布局,包括导航栏、侧边栏、卡片等UI元素。 数据准备与绑定:准备需要展示的数据,并通过Vue的常用指令(如v-bind、v-model等)实现数据绑定。 图表制作与...

    C#开发典型模块大全(光盘)

    2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 ...

    C#开发典型模块大全(光盘)第一部分

    2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 ...

    C#开发典型模块大全(光盘)第二部分

    2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 ...

    微信小程序Echarts覆盖正常组件问题解决

    最近公司的项目中需要在小程序内使用echarts组件来展示数据,同时因为使用了自定义导航栏以及蒙版层,导致Echarts图形覆盖于所有组件的上方,不符合设计要求。  尝试解决的思路:  z-index:Echarts使用的是微信...

    C# winform典型系统开发模板

     2.1 设计思路 28  2.2 关键技术 28  2.2.1 INI文件的应用 28  2.2.2 线程的应用 30  2.2.3 在Socket中发送大容量的消息 30  2.2.4 将流序列化或反序列化为对象 31  2.2.5 用InnerList...

    C#开发典型模块大全

    2.1 设计思路 28 2.2 关键技术 28 2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将流序列化或反序列化为对象 31 2.2.5 用InnerList列表记录信息 31 2.3 ...

    基于SSHI架构的开发平台技术方案

    包括:表格控件,树形菜单,树形表格,弹出框,对话框,选项卡,日期组件、日历组件、图表组件、报表组件、表单验证框架等 平台集成系统管理模块,包括:(1)服务器系统信息监控 (2)组织机构管理 (3)用户管理 (4)角色...

    智慧医疗可视化-一个基于SSM、Echarts、jsp等框架的数据大屏项目,通过Ajax、jstl等方式实现数据动态刷新渲染

    此外,为了提高项目的可维护性和扩展性,项目还采用了模块化的设计思路,将各个功能模块拆分为独立的组件,便于开发人员进行功能迭代和优化。同时,项目还遵循了良好的编码规范和设计原则,确保代码质量和可读性。

    精通Delphi数据库设计与实例开发配套光盘

    包括Delphi的快速入门、Object PascaI的语法基础、基本组件的使用方法、数据库基础知识、数据库环境设置、连接数据库的方法、使用BDE和ADO等组件进行各种数据操作的方法、数据控制组件的使用方法、报表和图表的设计...

    c++ Builder+实例入门陈雪飞清晰版

    第7章 绘制一个简单的图表 7.1 基础知识 7.2 编程思路 7.3 操作步骤 7.4 创意与超越 7.5 本章小结 第8章 图像编辑器 8.1 基础知识 8.2 编程思路 8.3 操作步骤 8.4 创意与超越 8.5 ...

    F2移动可视化解决方案-其他

    抛弃了特图特做的封装思路,基于强大的图形语法理论,以数据驱动,通过图形语法的组合灵活构建各类图表,目前可绘制 50+ 图表类型(当然,还可以更多),覆盖各类场景 在提供基础的图表可视化能力外,我们还提供了...

    软件界面设计工具_3款合集

    产品经理和开发人员等若想了解你的设计思想就不需要看着长长几页的说明文档了,而只需要运行你输出的原型文件,就可以对你的设计思路一目了然。  UIDesigner除了能让使用者能够快速地搭建起软件界面的高保真原型外...

    java课程设计报告---万年历.doc

    概要设计 3 2.1程序设计思路 3 2.2程序运行界面 4 2.3流程图 5 3.各模块的功能及程序说明 6 3.1.初始化组件 6 3.2.初始化数据 6 3.3.绘制程序界面 7 4.测试分析 8 5.源程序清单 10 6.课程设计体会 18 参考文献 19...

    数据分析的价值是什么?如何做好数据分析?.pdf

    数据分析的价值是什么?如何做好数据分析? 数据分析的价值是什么?如何做好数据分析? ⼤数据时代,不仅⼈⼈都是...丰富的交互控件和图表组件;智能图形推荐;⽀持业务主题和⾃助数据集;流式 布局,⽀持发布到APP。

    计算机基础大作业要求.doc

    主要描述Word文档、Excel工作簿、PowerPoint演示文稿(网站,如果有)的制作情况, 内容要求: 1、对word文档 设计思路: 【(1)主题的选择,资料如何获取等。 (2)版面的设计,各项内容的布局安排等。】 制作中...

Global site tag (gtag.js) - Google Analytics