如何在 Jasper Report 中向条形图添加水平线?
How can I add horizontal line to bar chart in Jasper Report?
我正在尝试设计一个带有条形图的报告,我需要在其中添加一个阈值。我试过多轴图表,其中不同轴的比例总是不同的。
有没有其他方法可以在条形图中添加折线?
我期望的输出是如下图表:
要在条形图上画一条线,请将 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);
}
}
在 jrxml 中确保您的 class 在 class 路径中并在图表标签上设置 customizerClass
属性
<barChart>
<chart customizerClass="MyChartCustomizer">
....
</chart>
...
</barChart>
如果使用dynamic-reports可以直接在代码中添加
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);
}
});
如果您正在使用 dynamic-jasper setCustomizerClass
(如在 jrxml 中)
DJBarChartBuilder().setCustomizerClass("MyChartCustomizer");
结果示例
注意:示例中没有使用包名,如果MyChartCustomizer
在包中需要在setCustomizerClass
示例中注明完整的包名"my.package.MyChartCustomizer"
对于一条水平线,您可以使用提供的图表定制器:
转到图表 -> 属性 -> 图表(选项卡) -> 图表定制器
您可以在此处添加一个范围间隔标记,并使用所需值(在您的示例中为 13000)配置起始值和结束值。
这样就会在13000的垂直值上画出你想要的水平线。
我正在尝试设计一个带有条形图的报告,我需要在其中添加一个阈值。我试过多轴图表,其中不同轴的比例总是不同的。
有没有其他方法可以在条形图中添加折线?
我期望的输出是如下图表:
要在条形图上画一条线,请将 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);
}
}
在 jrxml 中确保您的 class 在 class 路径中并在图表标签上设置 customizerClass
属性
<barChart>
<chart customizerClass="MyChartCustomizer">
....
</chart>
...
</barChart>
如果使用dynamic-reports可以直接在代码中添加
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);
}
});
如果您正在使用 dynamic-jasper setCustomizerClass
(如在 jrxml 中)
DJBarChartBuilder().setCustomizerClass("MyChartCustomizer");
结果示例
注意:示例中没有使用包名,如果MyChartCustomizer
在包中需要在setCustomizerClass
示例中注明完整的包名"my.package.MyChartCustomizer"
对于一条水平线,您可以使用提供的图表定制器:
转到图表 -> 属性 -> 图表(选项卡) -> 图表定制器
您可以在此处添加一个范围间隔标记,并使用所需值(在您的示例中为 13000)配置起始值和结束值。
这样就会在13000的垂直值上画出你想要的水平线。