绘制神秘的饼图 - 在Slice中错误的百分比

时间:2014-07-16 13:48:57

标签: jasper-reports pie-chart

我在v.5.6.0中使用 Jaspersoft Studio JasperReports Server
我想创建一个饼图,显示以红色着色的错误百分比。

示例:
$ V {til_1} =总计$ $ V {state_1} =错误
总计:2 - 错误:1 =>应该产生带有2个切片的饼图 - > 50%红色和50%绿色。

<小时/> 我使用了2个系列,一个系列(Keyexpression)和#34;绿色&#34; (值100.0),一个Serie(Keyexpression)&#34;红色&#34; (值:$ V {state_1}&gt; 1?0:new Float(($ V {state_1} * 100)/ $ V {til_1}))。

            <pieChart>
            <chart isShowLegend="false">
                <reportElement x="293" y="0" width="30" height="30" uuid="8369e35a-d6d6-4e0d-aa6e-fef7a118ecce"/>
                <chartTitle/>
                <chartSubtitle/>
                <chartLegend/>
            </chart>
            <pieDataset>
                <pieSeries>
                    <keyExpression><![CDATA["green"]]></keyExpression>
                    <valueExpression><![CDATA[100.0]]></valueExpression>
                    <labelExpression><![CDATA[null]]></labelExpression>
                </pieSeries>
                <pieSeries>
                    <keyExpression><![CDATA["red"]]></keyExpression>
                    <valueExpression><![CDATA[$V{state_1}>1?0:new Float(($V{state_1}*100)/$V{til_1})]]></valueExpression>
                    <labelExpression><![CDATA[null]]></labelExpression>
                </pieSeries>
            </pieDataset>
            <piePlot isShowLabels="false">
                <plot>
                    <seriesColor seriesOrder="0" color="#99FF99"/>
                    <seriesColor seriesOrder="1" color="#CC0000"/>
                </plot>
                <itemLabel/>
            </piePlot>
        </pieChart>

实际结果(包括问题):
但是,当我运行报告时,&#34; red&#34;接缝是正确的,图表输出图像没有 - 链接到下面的图像。
(50%红色而不是100%和33.3%红色而不是50%)
图片:

Actual Render-Output of code

有人知道我的错误/如何在饼图中获得正确的百分比 - 如果可能 - 一个简短的解释为什么jasper绘制错误的图表切片?因为这两个系列?

1 个答案:

答案 0 :(得分:0)

我相信你的问题是:图表不知道百分比是多少。

实际上,当你说它&#34;打印序列A为100&#34;和&#34;将系列B打印为50&#34;它假设100%(总数,完整图表)是A + B,即150.然后,你的系列B将显示为你总数的33.3%。

基本上,你需要手动计算你的比例&#34;。例如:

如果你有&#34; red&#34;如$V{state_1} > 1 ? 0 : (new Float($V{state_1})/$V{til_1})*100,您可以使用&#34;绿色&#34;为100 - ($V{state_1} > 1 ? 0 : (new Float($V{state_1})/$V{til_1})*100)