如何在条形图上设置基准线?

时间:2016-02-26 10:17:44

标签: java jasper-reports bar-chart jfreechart

我们正在使用jfreechart和Jasper报告,我们正在努力将基准线放在条形图上。

We need to add the redline on bar

如何使用jasper报告实现这一目标?

3 个答案:

答案 0 :(得分:2)

要在jasper报告中自定义条形图,请创建一个扩展JRChartCustomizer的自定义程序类(ChartCustomizer)。

public void customize(JFreeChart chart, ChartComponent chartComponent)
{
  //get the ploy
  CategoryPlot plot = (CategoryPlot) chart.getPlot();

  //Now add your markers
  ValueMarker vm = new ValueMarker(200); //200 is the position you like it to be
  vm.setPaint(Color.RED);
  vm.setStroke(new BasicStroke(1));
  vm.setLabel("BeanchMark value"); //The label
  vm.setLabelAnchor(RectangleAnchor.TOP);
  vm.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
  plot.addRangeMarker(vm);
}

将类添加到classpath并在jrxml中设置customizerClass属性

<barChart>
    <chart customizerClass="my.package.ChartCustomizer">
   ....
    </chart>
   ...
</barChart>

答案 1 :(得分:0)

我们已在自定义类

中使用以下代码解决了这个问题
ValueMarker marker = new ValueMarker(30);
    marker.setLabel("Average 30%");
    marker.setPaint(Color.black);
    plot.addRangeMarker(marker);

但是我们需要更改标签位置,目前它显示在行的开头。

答案 2 :(得分:0)

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

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

Chart properties

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

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