论坛首页 Java企业应用论坛

关于统计图的生成

浏览 9528 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-15   最后修改:2011-07-15
       近段时间,一直在研究统计图,被搞的焦头烂额,就剩一点一直无法突破,看了API文档也没找到解决方法,可能是本人愚钝。特列出以下跟大家讨论以下,请勿拍砖。。。
       1.当之无愧,首选JFreechart,网上评价也都很好,于是也就试了试,首先说明,我只用到了柱状图,开始一切都很顺利,生成报表图片。但是遇到了一问题就是看报表是要跳转页面,不过这个也顺利解决,方法就是在后台生成完统计图片后,保存一个URL,然后把URL存到一个list里边,通过json传递到前台,然后用js进行处理,可以无刷新的显示出来统计图,贴下代码共勉:
下边为action的代码,主要map为service里处理过的数据,String是标题,CategoryDataset是JFreeChart需要的数据格式,imageList用于存放url,ChartUtil.createBarChart(map.get(title),“员工姓名”, “任务数量”, title,path)用于生成图片保存在服务器端

	/**
	 * 
	 * <p>方法描述:任务统计报表</p>
	 * @return
	 */
	public String showReport() {
		imgList = new ArrayList<String>();
		try {
			Map<String, CategoryDataset> map = this.iTaskService.getDataset(
					usersId, info.getBeginDate(), info.getEndDate());
			for (String title : map.keySet()) {
				String path = UUID.randomUUID().toString() + ".png";
				ChartUtil.createBarChart(map.get(title), "员工姓名", "任务数量", title,
						path);
				path = "report/".concat(path);
				imgList.add(path);
			}
			log.info("任务报表生成成功");
		} catch (Exception e) {
			log.error("任务报表生成失败", e);
			e.printStackTrace();
		}
		return SUCCESS;
	}

然后前台就很简单了。通过对imageList进行遍历显示在DIV中,不予赘述。
      2.利用google chart api来生成统计图,优点:漂亮直观,方法简单;缺点:需要连接到google,速度受到很大限制,特别是现在google不稳定,这也是导致本人最后不用的原因,如下图:





上述图片实现也很简单,而且支持N种图表,功能很强大,代码放附件里了。。也可以访问网址:http://code.google.com/intl/zh-CN/apis/chart/interactive/docs/gallery/columnchart.html
      3.第三种就是flash了,图表也已经放在了附件里,是在博客园看到的,望博主看到勿怪。由于本人不会flash,所以也只能看看了。。
   
     下面谈论下我遇到的问题,希望有知道的朋友帮忙指点迷津下,折磨很久了,但是一直没法解决。。看下图,是我用jfreechart生成的统计图,但是却有一个缺点就是,当数值很少是,会呈现出下种结果。。。


希望大虾们指导指导。。。。

  • 大小: 3.8 KB
  • 大小: 6.6 KB
   发表时间:2011-07-15  
肿么没有人理楼主呢。。。。。。

好歹也要支持一下楼主的分享精神啊。。。。
0 请登录后投票
   发表时间:2011-07-18  
为什么不用FusionCharts?
0 请登录后投票
   发表时间:2011-07-18  
lijinghao0310 写道
为什么不用FusionCharts?

好使么?能精准控制每个部分么?
0 请登录后投票
   发表时间:2011-07-18  
Jclick 写道
lijinghao0310 写道
为什么不用FusionCharts?

好使么?能精准控制每个部分么?

用过FusionCharts,但是对它的效率很不满意。我使用的xml作为数据格式,当数据量比较大的时候,比如几条线性图n多时间点的时候,FusionCharts 的flash打开就会奇慢无比,不知道楼下有没有高手对FusionCharts的效率有什么好的优化方法?
0 请登录后投票
   发表时间:2011-07-18  
JFreechart挺好用的,就是显示出来的图片有点死板,也不好看,用于后台的统计挺好的,不适合前台展示。
0 请登录后投票
   发表时间:2011-07-18  
簡單從泚銷夨 写道
JFreechart挺好用的,就是显示出来的图片有点死板,也不好看,用于后台的统计挺好的,不适合前台展示。

话说JFreeChart在数据量多的时候还是蛮好使的,但是在没数据的时候显示的很难看,不知道怎么解决。。研究研究FusionCharts去。。看着挺漂亮的,Flash搞的。。
0 请登录后投票
   发表时间:2011-07-18  
Jclick 写道

话说JFreeChart在数据量多的时候还是蛮好使的,但是在没数据的时候显示的很难看,不知道怎么解决。。研究研究FusionCharts去。。看着挺漂亮的,Flash搞的。。

上次用的时候没好好研究,只是用了下,没数据的时候确实显示的很难看,好像显示NULL,不过可以判断一下,没数据那就没必要显示出来,FusionCharts 同事用过,确实比JFreeChart酷,可严重影响网站的性能,加载很慢的,,那位大侠可以推荐下有什么好的工具。
0 请登录后投票
   发表时间:2011-07-18  
楼主搜搜Highcharts吧.我对比了好多最终选择了这款.开源并且demo非常齐全,其他的报表要么文档少(FusionCharts ),要么就是demo做得很烂(open flash chart).
0 请登录后投票
   发表时间:2011-07-18  
一般来说有三类:
1. Server生成图片。
2. Client用Flash生成图片。
3. Client用Js生成图片(Canvas)。

在Server生成,会严重消耗性能。

在Client中,对于大数据量的可能会比较费时。

折中的是,在Server对数据进行预处理,在Client绘制。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics