我有一个折线图,我有四个系列的类别,如: -
收入, 目标,成本和毛利率。
默认情况下,图表将包含所有四个类别。
现在我想通过参数(复选框)传递这些类别,用户可以在其中选择他想要在图表中看到的类别,因为有时他只想查看收入趋势并且对一年中的目标趋势不感兴趣。 输入控件的默认值为Revenue,如果他想查看目标,他可以通过选择Target复选框参数为Target添加类别系列。
这样的事情: -
在iReport中可行吗?
我的类别系列代码: - 在此类别系列中,我创建了一个0值的dumy系列。
<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,但现在我的问题是类别表达式,这也是必需的字段,If语句是这样的:new Boolean($ P {p_revenue})? $ F {MTHYR}:“”,但它总是显示每个系列的内容,如上图所示: -
答案 0 :(得分:0)
首先,在您的iReport图表中,为每个复选框输入创建布尔值(true / false)。
接下来,右键单击您的图表并选择“图表数据”。单击“详细信息”。选择您的系列,单击“修改”。在“值表达式”框中,创建一个与此类似的if语句:
$ P {TargetBox} ==是吗? $ F {YourSeries}: - 1
其中$ P {TargetBox}是您创建的参数的名称,$ F {YourSeries}是您用于该系列的任何表达式。 -1可以是一个大的负值,你需要让你的线在图表的0行下消失。
确保将图表的“范围轴最小值”(在图表属性中)设置为0,以便在渲染时不会在0行下显示任何内容。
对您创建的每个复选框重复此操作。这应该使系列仅在选中相应的框时显示。