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

Ray*_*Jia 1 java jasper-reports jfreechart dynamic-jasper

我正在尝试设计带有条形图的报告,在其中我需要添加一个阈值。我尝试过使用多轴图表,其中不同轴上的比例始终不同。

还有其他解决方案可在条形图中添加折线吗?

我的期望输出是如下图: 在此处输入图片说明

Pet*_*erg 5

要在条形图上画一条线,请将ValueMarker添加到CategoryPlot。

在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

jrxml中,确保您的类在classpath中,并customizerClass在chart标签上设置属性

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

DJBarChartBuilder().setCustomizerClass("MyChartCustomizer");
Run Code Online (Sandbox Code Playgroud)

结果示例

图表

注意:在示例中不使用包名称,如果MyChartCustomizer在包中,则需要在setCustomizerClass示例中指出完整的包名称"my.package.MyChartCustomizer"