1

我有一个折线图,其中有四个系列的类别,例如:-

收入、目标、成本和毛利率。

默认情况下,图表将具有所有四个类别。

现在我想通过参数(复选框)传递这些类别,用户可以在其中选择他想在图表中看到的类别,因为有时他只想查看收入趋势而不对一年中几个月的目标趋势感兴趣。输入控件的默认值将是收入,如果他想查看目标,他可以通过选择目标复选框参数为目标添加类别系列。

像这样的东西:-

在此处输入图像描述

在 iReport 中可行吗?

我的类别系列代码:- 在这个类别系列中,我创建了一个 0 值的虚拟系列。

<categorySeries>
                        <seriesExpression><![CDATA[new Boolean($P{p_target}) ? "Target" :"Target"]]></seriesExpression>
                        <categoryExpression><![CDATA[new Boolean($P{p_target}) ? $F{MTHYR} :""]]></categoryExpression>
                        <valueExpression><![CDATA[new Boolean($P{p_target}) ? $F{TARGET} : $F{dumy}]]></valueExpression>
                    </categorySeries>
                    <categorySeries>
                        <seriesExpression><![CDATA[new Boolean($P{p_revenue}) ? "Revenue" :"Revenue"]]></seriesExpression>
                        <categoryExpression><![CDATA[new Boolean($P{p_revenue}) ? $F{MTHYR} :""]]></categoryExpression>
                        <valueExpression><![CDATA[new Boolean($P{p_revenue}) ?$F{REVENUE}  : $F{dumy}]]></valueExpression>
                    </categorySeries>
                    <categorySeries>
                        <seriesExpression><![CDATA[new Boolean($P{p_cost}) ? "Cost" :"Cost"]]></seriesExpression>
                        <categoryExpression><![CDATA[new Boolean($P{p_cost}) ? $F{MTHYR} :""]]></categoryExpression>
                        <valueExpression><![CDATA[new Boolean($P{p_cost}) ? $F{COST} : $F{dumy}]]></valueExpression>
                    </categorySeries>
                    <categorySeries>
                        <seriesExpression><![CDATA[new Boolean($P{p_gross_margin}) ? "Gross Margin" :"Gross Margin"]]></seriesExpression>
                        <categoryExpression><![CDATA[new Boolean($P{p_gross_margin}) ? $F{MTHYR} :$F{MTHYR}]]></categoryExpression>
                        <valueExpression><![CDATA[new Boolean($P{p_gross_margin}) ? $F{GROSS_MARGIN} : $F{dumy}]]></valueExpression>
                    </categorySeries>

在@MisterMichaelK 建议的解决方案之后,我将虚拟系列默认值更改为-50,但现在我的问题是类别表达式也是必需的,如果语句是这样的: new Boolean($P{p_revenue}) ?$F{MTHYR} :"" ,但它总是为每个系列显示一些东西,如上图:- 在此处输入图像描述

4

1 回答 1

0

首先,在您的 iReport 图表中,为每个复选框输入创建布尔(真/假)参数。

接下来,右键单击您的图表并选择“图表数据”。单击“详细信息”。选择您的系列,单击“修改”。在“值表达式”框中,创建类似于此的 if 语句:

$P{目标框} == 真?$F{你的系列}:-1

其中 $P{TargetBox} 是您创建的参数的名称, $F{YourSeries} 是您用于该系列的任何表达式。-1 可以是一个很大的负值,因为您需要使您的线消失在图表的 0 线下方。

确保将图表的范围轴最小值(在图表属性中)设置为 0,以便在呈现时不会在 0 行下方显示任何内容。

对您制作的每个复选框重复此操作。这应该使系列仅在选中相应框时显示。

于 2013-09-17T16:10:20.477 回答