Example usage for org.jfree.chart.renderer.category StackedBarRenderer getBaseItemLabelGenerator

List of usage examples for org.jfree.chart.renderer.category StackedBarRenderer getBaseItemLabelGenerator

Introduction

In this page you can find the example usage for org.jfree.chart.renderer.category StackedBarRenderer getBaseItemLabelGenerator.

Prototype

@Override
public CategoryItemLabelGenerator getBaseItemLabelGenerator() 

Source Link

Document

Returns the base item label generator.

Usage

From source file:net.sf.dynamicreports.design.transformation.chartcustomizer.GroupedStackedBarRendererCustomizer.java

@Override
public void customize(JFreeChart chart, ReportParameters reportParameters) {
    this.seriesColors = new LinkedHashMap<String, Paint>();
    this.map = null;
    Set<String> groups = new LinkedHashSet<String>();
    CategoryDataset dataset = chart.getCategoryPlot().getDataset();

    for (int i = 0; i < dataset.getRowCount(); i++) {
        String rowKey = (String) dataset.getRowKey(i);
        String group = StringUtils.substringBefore(rowKey, GROUP_SERIES_KEY);
        String series = StringUtils.substringAfter(rowKey, GROUP_SERIES_KEY);
        if (map == null) {
            map = new KeyToGroupMap(group);
        }/*from w  w  w . ja v a  2  s  .c  o m*/
        map.mapKeyToGroup(rowKey, group);
        groups.add(group);
        if (!seriesColors.containsKey(series)) {
            Paint paint = chart.getCategoryPlot().getDrawingSupplier().getNextPaint();
            seriesColors.put(series, paint);
        }
    }

    DefaultCategoryDataset newDataset = new DefaultCategoryDataset();
    for (Object column : dataset.getColumnKeys()) {
        for (String group : groups) {
            for (String series : seriesColors.keySet()) {
                try {
                    Number value = dataset.getValue(group + GROUP_SERIES_KEY + series, (Comparable<?>) column);
                    newDataset.addValue(value, group + GROUP_SERIES_KEY + series, (Comparable<?>) column);
                } catch (UnknownKeyException e) {
                    newDataset.addValue(0, group + GROUP_SERIES_KEY + series, (Comparable<?>) column);
                }
            }

        }
    }
    dataset = newDataset;

    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    renderer.setSeriesToGroupMap(map);

    StackedBarRenderer categoryRenderer = (StackedBarRenderer) chart.getCategoryPlot().getRenderer();
    renderer.setBaseItemLabelsVisible(categoryRenderer.getBaseItemLabelsVisible());
    renderer.setBaseItemLabelFont(categoryRenderer.getBaseItemLabelFont());
    renderer.setBaseItemLabelPaint(categoryRenderer.getBaseItemLabelPaint());
    renderer.setBaseItemLabelGenerator(categoryRenderer.getBaseItemLabelGenerator());
    renderer.setShadowVisible(categoryRenderer.getShadowsVisible());

    renderer.setItemMargin(0.10);
    renderer.setDrawBarOutline(false);
    for (int i = 0; i < dataset.getRowCount(); i++) {
        String rowKey = (String) dataset.getRowKey(i);
        String score = StringUtils.substringAfter(rowKey, GROUP_SERIES_KEY);
        renderer.setSeriesPaint(i, seriesColors.get(score));
    }

    CategoryAxis domainAxis = chart.getCategoryPlot().getDomainAxis();
    SubCategoryAxis newDomainAxis = new SubCategoryAxis(domainAxis.getLabel());
    newDomainAxis.setLabelFont(domainAxis.getLabelFont());
    newDomainAxis.setTickLabelFont(domainAxis.getTickLabelFont());
    newDomainAxis.setLabelPaint(domainAxis.getLabelPaint());
    newDomainAxis.setTickLabelPaint(domainAxis.getTickLabelPaint());
    newDomainAxis.setAxisLinePaint(domainAxis.getAxisLinePaint());
    newDomainAxis.setTickMarkPaint(domainAxis.getTickMarkPaint());
    newDomainAxis.setTickLabelsVisible(domainAxis.isTickLabelsVisible());
    newDomainAxis.setTickMarksVisible(domainAxis.isTickMarksVisible());
    newDomainAxis.setCategoryMargin(0.05);
    for (String group : groups) {
        newDomainAxis.addSubCategory(group);
    }

    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    plot.setDomainAxis(newDomainAxis);
    plot.setRenderer(renderer);

    LegendItemCollection legendItems = new LegendItemCollection();
    for (String item : seriesColors.keySet()) {
        legendItems.add(new LegendItem(item, seriesColors.get(item)));
    }
    plot.setFixedLegendItems(legendItems);

    chart.getCategoryPlot().setDataset(dataset);
}