如何在Jasper Report中向条形图添加水平线?

时间:2016-02-05 16:27:55

标签: java jasper-reports jfreechart dynamic-jasper

我正在尝试使用条形图设计报告,其中我需要添加一个阈值。我尝试过多轴图表,其中不同轴的刻度总是不同的。

是否有其他解决方案可以在条形图中添加线条?

我的期望输出是如下图表: enter image description here

2 个答案:

答案 0 :(得分:4)

要在条形图上绘制一条线,请在CategoryPlot中添加ValueMarker

在jasper报告中,我添加了JRChartCustomizer

public class MyChartCustomizer implements JRChartCustomizer {

    @Override
    public void customize(JFreeChart jfchart, JRChart jrchart) {
        CategoryPlot plot = (CategoryPlot) jfchart.getPlot();
        //Set at what value you like the line, its color and size of stroke
        ValueMarker vm = new ValueMarker(13000,Color.BLUE, new BasicStroke(2.0F));
        //add marker to plot
        plot.addRangeMarker(vm);
    }
}

jrxml 中,确保您的班级在类路径中,并在图表代码上设置customizerClass属性

<barChart>
    <chart customizerClass="MyChartCustomizer">
   ....
    </chart>
   ...
</barChart>

如果您使用,可以直接在代码中添加

chart.addCustomizer(new DRIChartCustomizer() {      
    private static final long serialVersionUID = 1L;
    @Override
    public void customize(JFreeChart chart, ReportParameters arg1) {
        CategoryPlot plot = (CategoryPlot) jfchart.getPlot();
        ValueMarker vm = new ValueMarker(13000,Color.BLUE, new BasicStroke(2.0F));
        plot.addRangeMarker(vm);
    }
});

如果您使用 setCustomizerClass(如在jrxml中)

DJBarChartBuilder().setCustomizerClass("MyChartCustomizer");

结果示例

Chart

注意:在示例中没有使用包名称,如果包中有MyChartCustomizer,则需要在setCustomizerClass示例"my.package.MyChartCustomizer" <中指明完整包名称/ p>

答案 1 :(得分:0)

对于一条水平线,您可以使用提供的图表定制器:

转到图表 -> 属性 -> 图表(选项卡)-> 图表定制器

Chart properties

您可以在那里添加一个范围间隔标记,并使用具有所需值(在您的示例中为 13000)的开始和结束值对其进行配置。

这样会根据需要在 13000 垂直值中绘制一条水平线。