繁体   English   中英

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

[英]How can I add horizontal line to bar chart in Jasper Report?

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

有没有其他解决方案可以向条形图添加折线?

我的期望输出是一个图表,如下所示: 在此处输入图片说明

要在条形图上画一条线,请向 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");

结果示例

图表

注意:示例中没有使用包名,如果MyChartCustomizer在一个包中,需要在setCustomizerClass示例"my.package.MyChartCustomizer"指明完整的包名

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

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

图表属性

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM