【问题标题】:How to put benchmark line on barchart?如何在条形图上放置基准线?
【发布时间】:2016-06-09 12:13:40
【问题描述】:

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

如何使用 jasper 报告来实现这一点?

【问题讨论】:

  • 嗨,Santosh,您能发布到目前为止您尝试过的代码示例吗?这将使其他人更容易纠正/回答。

标签: java jasper-reports bar-chart jfreechart


【解决方案1】:

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

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

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

这样一来,水平线就会按照你想要的 35 垂直值绘制出来。

【讨论】:

    【解决方案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);
    }
    

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

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

    【讨论】:

      【解决方案3】:

      我们已经通过在自定义类中使用以下代码解决了这个问题

      ValueMarker marker = new ValueMarker(30);
          marker.setLabel("Average 30%");
          marker.setPaint(Color.black);
          plot.addRangeMarker(marker);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 2020-11-09
        • 2017-05-04
        相关资源
        最近更新 更多