Jasper创建柱状图(6.17.0)

需求: 使用Jasper studio 生成pdf模板,模板中有个柱状图。

Jasper中使用Chart可以生成各种图形统计表,Jasper本身的文档中介绍饼状图较多,对其它的图形统计表价绍很少。我们这里,要使用的是BarChart:

  1. BarChart
    在这里插入图片描述
    BarChart中有四维参数需要设置,Series、Value、Category、Label:
    在这里插入图片描述
    这里举个例子来解释一些,假设我要统计1991年到2021年各产业的GDP,Value就是只GDP的具体数值,Category就是指年份[1991~ 2021],而Series就是指第一产业到第三产业,而Label我暂时不清楚啥意义,但也很重要。

网上大多数例子都说是忽略Label的,后面我会说明为啥不能如此。

  1. 参数设置
    我们需要求是单柱状图,因此我们不需要Series,可以如下设置Legend=false:
    在这里插入图片描述
    为了对Chart进行数据绑定,我们需要新建一个DataSet,然后定义我们需要的各域:
<subDataset name="Dataset1" uuid="2aee24e3-d354-45a4-bf6a-7cc8200b4773">
		<property name="com.jaspersoft.studio.data.defaultdataadapter" value="New Data Adapter "/>
		<queryString>
			<![CDATA[]]>
		</queryString>
		<field name="chartValue" class="java.lang.Integer"/>
		<field name="chartCategory" class="java.lang.String"/>
	</subDataset>

然后可以设置数据绑定:
在这里插入图片描述
完整代码如下:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{chartList})

注意chartList的类型是ArrayList。当然你也可以直接$P{chartList},然后类型用JRDataSource,Java代码传参的时候需要重载一个JRDataSource类。

同时需要注意的是 Reset on这里改为Report。

  1. 问题
    所有的设置好了,然后我按网上的(忽略Label)方案,Java传参后却发现,无论我的ArrayList是多大,柱状图只显示最后一个数据。后来才发现,需要将Label设置为与Catogery一致就OK了:
	<seriesExpression><![CDATA["series 1"]]></seriesExpression>
	<categoryExpression><![CDATA[$F{
   chartCategory}]]></categoryExpression>
	<valueExpression><![CDATA[$F{
   chartValue}]]></valueExpression>
	<labelExpression><![CDATA[$F{
   chartCategory}]]></labelExpression>

还有各问题是,柱状图的颜色的随机的,对于我们这周单柱状图,我们只需要一种颜色,修改Series color即可:
在这里插入图片描述
在这里插入图片描述
在这里添加一种颜色,然后选中即可。

效果:
在这里插入图片描述

  1. 完整代码参考
<?xml version=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值