在birt报表中建立曲线图以及如何调整X轴刻度

由于不是经常摸birt,有报表开发才使用,今天做了一个曲线图,在这里把整个过程写一下,以免下次自己又忘记怎么弄了。
数据源什么的就不说了,下面是我的数据集,日期,另外两个数据:
[img]/upload/attachment/140900/4898a6ab-3e4c-36d1-9f12-5601620c1f7b.bmp[/img]
添加曲线图,然后设置X轴Y轴,我这里Y轴有两个数据,并且由于数据库中存的日期为字符型,这里做了一下转换:
d = new Date(row["col1"].replace(/-/g, "/"));

[img]/upload/attachment/140902/dbbf0c2f-7d10-38be-9dc4-c6fe57e87ca7.bmp[/img]
点击next进入下一个页面,选中X-Axis设置一下type改成DateTime的格式

[img]/upload/attachment/140904/91ba8bdc-e1f6-33fc-9116-7681cf97007b.bmp[/img]


这里的日期格式可以调整,点击type后面的按钮,进行调整,可以选择不定义的,标准的,也可以选择高级的,高级的可以自己设定,由于我做的涉及跨度比较大就到了年和月:yy-MM
这里的规则不知道,我试了半天找到了自己想要的:

[img]/upload/attachment/140907/df325e7a-8673-373f-a2b3-9641084cbfcc.bmp[/img]


X轴的日期刻度可以通过程序设定,也可以在报表中设定,在报表中设定的话,需要先勾掉Is Category Axis ,然后在Scale里面设定

[img]/upload/attachment/140909/eae099c2-c1c4-3131-bff5-6b71010f51ec.bmp[/img]


如果用程序设定的话Is Category Axis需要勾选,选中chart图在函数onRender中添加下面代码并且需要添加两个参数sdate,edate,代码部分是JAVAEYE中一个birt高手huhuanqadn写的,地址是http://huhuanqadn.iteye.com/blog/384123

importPackage(Packages.org.eclipse.birt.chart.model.data.impl);
importPackage(Packages.java.text);
importPackage(Packages.java.util);
importPackage(Packages.java.lang); //导入一些用到的包

function beforeGeneration( chart, icsc )
{
stime = icsc.getExternalContext().getScriptable().getParameterValue("stime"); //获取报表参数开始时间
etime = icsc.getExternalContext().getScriptable().getParameterValue("etime");

format = new SimpleDateFormat("yyyy-MM-dd"); //因为考虑到页面传过来的值为String类型,要转为时间类型
scal = Calendar.getInstance(); //构建Calendar实例
ecal = Calendar.getInstance();

sd = format.parse(stime); //将字符串转化为时间
ed = format.parse(etime);
scal.setTime(sd); //把时间设置到calendar里。
ecal.setTime(ed);

xAxisArray = chart.getBaseAxes(); //得到x轴对象
xAxisArray[0].setCategoryAxis(false); //设置x轴显示为我们设定的时间,如果不设置这项,x轴会默认显示我们读取数据库的时间,有兴趣的可以把他设置为true,对比一下效果就清楚了。

xAxisArray[0].getScale().setMin(DateTimeDataElementImpl.create(scal.getTimeInMillis()));
//设置时间轴最小值
xAxisArray[0].getScale().setMax(DateTimeDataElementImpl.create(ecal.getTimeInMillis()));
//设置时间轴最大值
xAxisArray[0].getScale().setUnit( xAxisArray[0].getScale().getUnit().DAYS_LITERAL);
//设置为日期间隔
xAxisArray[0].getScale().setStep(5); //设置日期间隔为5天。

}

注意:
1、如果不想根据参数时间来设置,而是固定的时间,比如一天24小时,那在设计器里图表格式的缩放比例里简单设置就可以了。如果有人不明白,我们再写相应的教程。
2、simpledateformat的parse使用要注意了,经常有人问我一parse就出错,如果不明白的请注意,format的格式要与你的字符串格式一致,format格式不是把字条串格式化成什么格式的时间,这里一定要注意。

然后给报表添加好标题,Preview,好了。如下图


[img]/upload/attachment/140912/2b967527-f94e-3947-a3c7-64081a3b31b0.bmp[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值