使用birt chart 制作图表,遇到了一个问题:
chart 设置了固定的长宽尺寸之后,图表呈现的时候经常出现过粗、或者过密的问题。严重影响了图表的呈现,如果能根据数据的多少,动态调整图表的长宽尺寸就好了。
例如 barNum = 5;
则 设置 chart.width = 50*barNum;
内容:
一:简介图表的制作
二:设置图表尺寸自适应
一:图表的制作
与正常birt 报表制作步骤相同,详细步骤在此不多说,参看:birt中文参考手册.chm
1:新建模板文件 chartResizingTest.rptdesign,配置数据源 ClassicModels
2:建立测试数据集,统计用户ID、用户名、订单数量。传入两个参数maxID、minID限定用户ID范围。
3:插入统计表格,并插入柱状图。
做完之后,报表模板的大概样子如下图figure1
但是这样的图表有一个明显的缺陷,chart 的长宽是固定的,不能适应数据量的变化,导致生成的图无法看。例如你设置了Width: 300points; Height: 200points; 当数据量很少的时候,柱图很粗(难看);当数据量很多时,柱图很密(没法看)。
如果能根据数据量得多少,动态调整chart 图的大小就很很好的解决上述问题。幸运的是BIRT 提供的支持还是很强大的,提供JS、Java的接口进行动态设置。详见下文
二、动态调整图表尺寸
通过JavaScript 重写chart onRender 事件,根据查询数据量,动态调整chart 尺寸大小。
1://获取chart 绑定数据集的数据量,传入变量var barcnt;
//"mybar"为chart 数据区 自定义的名字
2:获取变量barcnt 的值,重写设置chart 尺寸
OK,搞定了,根据chart绑定数据集数据量的大小,动态设置chart 的宽度 50*barcnt; 完整birt 模板见 “Birt chart 动态尺寸”
参考资料:
1:birt 中文参考手册.chm --birt 基础教程 http://download.csdn.net/source/3318430
2:Birt chart 动态尺寸 模板源文件:http://download.csdn.net/source/3392797
3:Birt chart width eclipse 论坛帖子: http://www.eclipse.org/forums/index.php/m/367583/#msg_367583