FineReport自学习题第四题——图表

最近在学习FineReport设计报表,刷自学题目刷到第四题被卡了老半天,终于是写出来了,在此开个解题攻略整理下思路。此处是题目出处:FineReport学习计划表

题目

模板样例

实现功能:

  • 可以选择数据库中存在的所有年份
  • 根据选择的年份统计出该年下每个月的订单总数、已付订单数量、月销量
  • 根据统计的数据制作混合图表,其中已付订单数量使用折线图,月销量坐标轴在右侧
  • 分类轴日期倾斜显示
  • 统计表中日期从小到大排列
  • 动态显示标题:xx年各月份销售业绩表

使用数据:

  • FRDemo中的订单表与订单明细

数据集设计要点

  1. 月销量 = [订单明细].[数量] * [订单明细].[单价],没有算上折扣
  2. 一个订单ID对应有多张订单,所以光统计[订单]里ID的数量是达不到范例中的效果的
  3. 数据集中最好单独统计出一列“年份”字段,方便后面在表格中接收参数

这里最坑的就是这个“月销量”,我一直以为月销量是指“月销售数量”,结果它居然是“月销售额”,还不算上折扣,不知道是我语死早还是出题人语死早了。言归正传,注意上述三点雷区剩下的应该就没问题了。
我在这里用了三个数据集,一个“年份”数据集统计所有年份;一个“年度销售表”数据集,统计“订购数量”和“月销售量”以及“订购年月”,设置有‘$year’变量以提供参数查询;另一个“年度已付订单”数据集,用于统计当月已付订单的数量。之所以已付订单和订购量分开来查询是因为我实在没什么办法同时查询这两个,SQLite也不支持设置临时变量,希望朋友们能在评论区指点一二。以下是后两个数据集的SQL语句:

--  年度销售表
SELECT 	strftime('%Y-%m', `订单`.`订购日期`) AS '订购年月',
		COUNT(`订单`.`订单ID`) AS '订单数量',
		SUM(`订单明细`.`数量` * `订单明细`.`单价`) AS '月销售量',
		strftime('%Y', `订单`.`订购日期`) AS '年份'
FROM 	`订单`, `订单明细`
WHERE	`订单`.`订单ID` = `订单明细`.`订单ID` AND
		`年份` = '${year}'
GROUP BY 	`订购年月`, `年份`
ORDER BY	`年份`;

-- 年度已付订单
SELECT	COUNT(`订单`.`是否已付`) AS '已付订单',
		strftime('%Y-%m', `订单`.`订购日期`) AS '订购年月',
		strftime('%Y', `订单`.`订购日期`) AS '年份',
		strftime('%m', `订单`.`订购日期`) AS '月份'
FROM 	`订单`, `订单明细`
WHERE 	`订单`.`是否已付` = 'true' AND
		`订单`.`订单ID` = `订单明细`.`订单ID`
GROUP BY	`订购年月`

图表设计

在此题中图表才是真正的重点。该图例要求我们使用“柱状图” + “折线图”的组合图形式进行设计,且折线图的Y轴刻度必须隐藏,月销量的Y轴置于图表右侧。在这里我已经完成了表格的设计,接下来让我们从图表设计开始。
1、首先选中一块区域合并,作为我们插入图表的地方。注意这里我的各项属性和列名分别在哪些单元格,之后添加数据列的时候会用到。
在这里插入图片描述
2、右键单击该区域,在 “单元格元素” 中选择 “插入图表” ,此时界面会弹出图表类型选择框,在左边的类型中选择 组合图 ,选择第一个 “柱形图 - 折线图”
在这里插入图片描述
3、创建好图表后,我们需要让表格独立显示在当前页面而不是跟着表格变动。故在此我们需要将表格的父格改成无。在右侧侧边栏找到 “单元格属性” ,选择 “扩展” 选项卡,把左父格和上父格改成无。
在这里插入图片描述
4、现在,让我们把数据列加到图表中。在右侧侧边栏中找到 “单元格元素” ,选择 “数据” 选项卡。注意,此处“数据”选项卡内有两个子项,分别是“柱状图”和“折线图”,接下来我们要分别把数据列输进去。
在这里插入图片描述
5、首先我们先将数据列输入到柱状图中。以我在第一步的图示中的表格为例,首先在 “数据来源” 中选择 “单元格数据” ,随后在 “分类名” 输入 “=A3”, 系列名与系列值 需要输入两组,一组是“=B2”和“=B3”,一组是“=D2”和“=D3”。
在这里插入图片描述
在这里,我们可以通过官方文档了解系列名、系列值和分类名分别是什么含义:

1)分类轴:就是图表的横轴,即 x 轴,表示数据是按照什么分类显示的;
2)系列名:系列是每个分类下面的细分,有几个系列,每个分类下就有几根柱子
3)系列值:就是每个系列的值;

接下来我们如法炮制,将D2与D3的数据输入到折线图中,分类名同样是A3:
在这里插入图片描述
6、数据填好之后,我们可以先保存一下通过分页预览看看效果,但这个时候我们会发现图表的表现效果与我们想要的大相径庭。这是因为我们在输入数据列之后没有设置数据相对应的Y轴,接下来,我们还需要对Y轴进行设置。
在这里插入图片描述
(如上图所示,由于Y轴的问题,“订单数量”在表格中几乎不可见。)
7、在 “单元格元素” 中打开 “样式” 选项卡,找到子项 “坐标轴” ,随后点击下方的“+”号,添加一列新的Y轴,然后将Y轴2的轴标签修改为 “隐藏” ,将Y轴2和Y轴3的位置修改为 “右侧”
在这里插入图片描述
关于坐标轴的其他样式属性我不在这里着过多的笔墨,这里我只解释涉及到的,各位若是有兴趣,可以在空闲之余自己调整其中几个变量试试效果。
轴标签位置的值代表着Y坐标轴是在左侧还是右侧,选择0值会使坐标轴靠在最左侧。
轴标签的显示和隐藏是表示该Y轴是否显示在图表中。从图例中我们可以看到,左侧显示的是“订购数量”的Y轴,右侧显示的是“月销量”的Y轴,没有“已付订单”的Y轴,所以在这里我们要隐藏其中一列。
8、添加完Y轴之后,我们点击 “样式” 选项卡下的 “系列” 子项,在这里设置坐标轴对应的系列为何。同样,我们可以在这里看见“柱状图”和“折线图”两项。首选选择“柱状图”,在 “堆积和坐标轴” 中点击“+”号添加新项,界面上会弹出坐标轴设置窗口,在Y轴中选择“Y轴3”,然后添加条件“系列序号 等于 2”,点击屏幕上的空白处使修改生效。
在这里插入图片描述
此处我们将Y轴3与月销量的值捆绑在了一起,系列序号选择2是因为先前在“数据”中添加系列名时月销量时第二个加进去的。同理,我们在“折线图”中将系列序号3与Y轴2捆绑在一起。
这里我们最好把名字改一下,双击就可以修改名字了,良好的命名习惯有利于日后维护。
在这里插入图片描述
9、现在,让我们做个简单的修饰,重新选择分页浏览查看效果。
在这里插入图片描述
到这里,我们的图表已经基本符合我们题目的要求了,我没有对颜色形状什么的做太多修改,各位可以自行尝试。

结尾

以上就是整个题目的解题过程了,这题涉及了很多对基本图例的操作,掌握此题有助于我们更好的利用图表呈现数据。各位可以在评论区畅所欲言,提出问题或分享自己的看法,您的思路与针砭将会大大促进我们双方的进步。

评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值