了解总系列,为 JFreeChart 创建定制器类



我在iReport中创建了一个报告(使用折线图),并使用JasperReports库在我的Web应用程序中打印报告。

我正在使用定制器类来自定义折线图中的几个选项。现在,因为该类在所有图表中都是通用的。

现在我的一些图表有 2 个系列,而某人只有 1 个系列。

有什么办法可以知道我班上的系列数。

下面是示例类。我想将所有系列的形状设置为相同。

public class LineChartCustomizer implements JRChartCustomizer  {
    private static Log  log = LogFactory.getLog(LineChartCustomizer.class);
    @Override
    public void customize(JFreeChart jFreeChart, JRChart jrChart) {
        CategoryPlot plot = jFreeChart.getCategoryPlot();
        LineAndShapeRenderer renderer = new LineAndShapeRenderer();                        
        renderer.setSeriesShape(0, ShapeUtilities.createDiamond(1F));
        //Need help in above to loop through total no of series instead of hard coding to 0
        //This is so that the value of X axis starts from 0 and does not leave any space
        plot.getDomainAxis().setLowerMargin(0.01);
        plot.getDomainAxis().setUpperMargin(0.01);   
        plot.setRenderer(renderer);
    }
}

您可以通过调用以下命令获取系列的总数:

jFreeChart.getXYPlot().getDataset().getSeriesCount()

使用它修改所有系列应该很简单。

int seriesCount = jFreeChart.getXYPlot().getDataset().getSeriesCount()
for (int i = 0; i < seriesCount; i++) {
    renderer.setSeriesShape(i, ShapeUtilities.createDiamond(1F));
}

最新更新