条形图条形宽度在碧玉中非常薄

时间:2015-11-07 08:30:39

标签: jasper-reports bar-chart jfreechart

我在ireport 3.0中创建了一个Barchart,问题是条形很薄。当我试图通过自定义r类来增加条宽时,它并不反映条的大小的任何变化,即宽度与它相同。那么如何增加条形图条的宽度呢?我附上了一份图片副本供您理解。

enter image description here 条宽如图所示。

Bar width

1 个答案:

答案 0 :(得分:0)

我也面临着同样的问题。经过长时间的搜索,我发现了一些解决了我问题的解决方案。碧玉报告条形图的条形宽度取决于图表的高度和宽度。由于碧玉在后端使用JFreechart,因此自定义类可以进行许多修改。为了增加钢筋的宽度,您需要一个自定义类,然后将其添加到barchart jrxml中,例如波纹管

public class JasperBarChartCustomization implements JRChartCustomizer {
@Override
public void customize(JFreeChart chart, JRChart jasperChart) {
    CategoryPlot catPlot = (CategoryPlot) chart.getPlot();
    BarRenderer renderer = (BarRenderer) catPlot.getRenderer();
    renderer.setMaximumBarWidth(.08);//for max width//
    renderer.setItemMargin(-2);//as much margin decrease that much bar width increase//
    //for adding value ob bar//
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    renderer.setBaseItemLabelPaint(Color.WHITE);
    renderer.setBaseItemLabelFont(new Font("fontname", Font.PLAIN, 6));
    //for remove legend background color and box border//
    if (chart.getLegend() != null) {
        chart.getLegend().setBorder(0.0, 0.0, 0.0, 0.0);
        LegendTitle legend = chart.getLegend();
        legend.setBorder(0, 0, 0, 0);
        legend.setFrame(BlockBorder.NONE);
    }
  }
}

现在从上述类中创建一个jar,并在ur jasper项目的类路径中使用该jar

如果您的jasper在Java应用程序中运行,那么您可以直接使用该类而无需创建jar。在您的代码库中创建自定义类