Example usage for org.jfree.chart.renderer.category GroupedStackedBarRenderer setSeriesToGroupMap

List of usage examples for org.jfree.chart.renderer.category GroupedStackedBarRenderer setSeriesToGroupMap

Introduction

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

Prototype

public void setSeriesToGroupMap(KeyToGroupMap map) 

Source Link

Document

Updates the map used to assign each series to a group, and sends a RendererChangeEvent to all registered listeners.

Usage

From source file:org.jfree.chart.demo.StackedBarChartDemo5.java

private static JFreeChart createChart(CategoryDataset categorydataset) {
    JFreeChart jfreechart = ChartFactory.createStackedBarChart("Stacked Bar Chart Demo 5", "Category", "Value",
            categorydataset, PlotOrientation.VERTICAL, true, true, false);
    GroupedStackedBarRenderer groupedstackedbarrenderer = new GroupedStackedBarRenderer();
    KeyToGroupMap keytogroupmap = new KeyToGroupMap("G1");
    keytogroupmap.mapKeyToGroup("S1", "G1");
    keytogroupmap.mapKeyToGroup("S2", "G1");
    keytogroupmap.mapKeyToGroup("S3", "G2");
    keytogroupmap.mapKeyToGroup("S4", "G3");
    groupedstackedbarrenderer.setSeriesToGroupMap(keytogroupmap);
    groupedstackedbarrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    groupedstackedbarrenderer.setBaseItemLabelsVisible(true);
    groupedstackedbarrenderer.setPositiveItemLabelPositionFallback(
            new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
    groupedstackedbarrenderer.setItemMargin(0.10000000000000001D);
    SubCategoryAxis subcategoryaxis = new SubCategoryAxis("Category / Group");
    subcategoryaxis.setCategoryMargin(0.050000000000000003D);
    subcategoryaxis.addSubCategory("G1");
    subcategoryaxis.addSubCategory("G2");
    subcategoryaxis.addSubCategory("G3");
    CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
    categoryplot.setDomainAxis(subcategoryaxis);
    categoryplot.setRenderer(groupedstackedbarrenderer);
    return jfreechart;
}

From source file:org.jfree.chart.demo.DualAxisDemo6.java

private static JFreeChart createChart(CategoryDataset categorydataset, CategoryDataset categorydataset1) {
    CategoryAxis categoryaxis = new CategoryAxis("Category");
    NumberAxis numberaxis = new NumberAxis("Value");
    GroupedStackedBarRenderer groupedstackedbarrenderer = new GroupedStackedBarRenderer();
    KeyToGroupMap keytogroupmap = new KeyToGroupMap("G1");
    keytogroupmap.mapKeyToGroup("Series 1A", "G1");
    keytogroupmap.mapKeyToGroup("Series 1B", "G1");
    keytogroupmap.mapKeyToGroup("NOTHING", "G2");
    groupedstackedbarrenderer.setSeriesToGroupMap(keytogroupmap);
    CategoryPlot categoryplot = new CategoryPlot(categorydataset, categoryaxis, numberaxis,
            groupedstackedbarrenderer) {

        private static final long serialVersionUID = 1L;

        public LegendItemCollection getLegendItems() {
            LegendItemCollection legenditemcollection = new LegendItemCollection();
            legenditemcollection.addAll(getRenderer().getLegendItems());
            CategoryDataset categorydataset2 = getDataset(1);
            if (categorydataset2 != null) {
                CategoryItemRenderer categoryitemrenderer = getRenderer(1);
                if (categoryitemrenderer != null) {
                    org.jfree.chart.LegendItem legenditem = categoryitemrenderer.getLegendItem(1, 1);
                    legenditemcollection.add(legenditem);
                }//  w ww .  ja  va  2 s .  c  o m
            }
            return legenditemcollection;
        }

    };
    JFreeChart jfreechart = new JFreeChart("Dual Axis Bar Chart", categoryplot);
    categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    categoryplot.setDataset(1, categorydataset1);
    categoryplot.mapDatasetToRangeAxis(1, 1);
    NumberAxis numberaxis1 = new NumberAxis("Secondary");
    categoryplot.setRangeAxis(1, numberaxis1);
    categoryplot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);
    BarRenderer barrenderer = new BarRenderer();
    categoryplot.setRenderer(1, barrenderer);
    ChartUtilities.applyCurrentTheme(jfreechart);
    return jfreechart;
}

From source file:org.neo4j.bench.chart.ChartData.java

public <T> T render(ChartDestination<T> chart) {
    if (groupmap == null) {
        throw new IllegalStateException("Cannot render a chart without any data.");
    }//from  w  w  w  .  ja  v a2 s.  com
    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    renderer.setSeriesToGroupMap(groupmap);
    CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis, renderer);
    return chart.render(title, plot, renderer);
}

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   ww w.j  ava2  s.co  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);
}

From source file:org.pentaho.chart.plugin.jfreechart.chart.bar.JFreeStackedBarChartGenerator.java

/**
 * Creates stacked bar chart and creates range axis for it.
 * </p>//w w  w.ja  v a 2 s  .  co m
 * @param chartDocContext Current chart's document context
 * @param data Current chart data
 * @return Returns JFree layered bar chart.
 */
protected JFreeChart doCreateChart(final ChartDocumentContext chartDocContext, final ChartTableModel data) {
    final JFreeChart chart = createChart(chartDocContext, data, JFreeBarChartTypes.STACKED);

    /*
     * Doing all the render stuff and then off to create range axis.
     * NOTE: The chart object will be updated.
     */
    final ChartDocument chartDocument = chartDocContext.getChartDocument();
    if (JFreeChartUtils.getIsStackedGrouped(chartDocument)) {
        final GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
        final KeyToGroupMap map = JFreeChartUtils.createKeyToGroupMap(chartDocument, data,
                chart.getCategoryPlot().getDataset());
        renderer.setSeriesToGroupMap(map);

        final CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setRenderer(renderer);
    }

    createRangeAxis(chartDocContext, data, chart);
    return chart;
}

From source file:playground.yu.utils.charts.StackedBarChart.java

public void addSeries(String[] rowKeys, String[] columnKeys, String[] subCategoryKeys, double[][] values) {
    for (int rowIdx = 0; rowIdx < values.length; rowIdx++) {
        for (int columnIdx = 0; columnIdx < values[rowIdx].length; columnIdx++) {
            dataset.addValue(Double.valueOf(values[rowIdx][columnIdx]), rowKeys[rowIdx], columnKeys[columnIdx]);
        }/*from   w  w w  .  jav  a2s  .c  o  m*/
    }

    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();

    KeyToGroupMap map = new KeyToGroupMap(subCategoryKeys[0]);
    int size = rowKeys.length / subCategoryKeys.length;
    for (int rowIdx = 0; rowIdx < rowKeys.length; rowIdx++) {
        map.mapKeyToGroup(rowKeys[rowIdx], subCategoryKeys[rowIdx / size]);
    }
    renderer.setSeriesToGroupMap(map);

    Color[] paints = new Color[size];
    Random random = MatsimRandom.getLocalInstance();
    for (int i = 0; i < paints.length; i++) {
        paints[i] = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
    }
    for (int i = 0; i < rowKeys.length; i++) {
        renderer.setSeriesPaint(i, paints[i % size]);
    }

    CategoryPlot plot = (CategoryPlot) chart.getPlot();

    SubCategoryAxis domainAxis = new SubCategoryAxis("subCategory / column");
    for (int subCtgr = 0; subCtgr < subCategoryKeys.length; subCtgr++) {
        domainAxis.addSubCategory(subCategoryKeys[subCtgr]);
    }

    plot.setDomainAxis(domainAxis);

    plot.setRenderer(renderer);
    // plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
}

From source file:edu.uara.wrappers.customcharts.CustomBarChart.java

@Override
public void generateGroupBarChart(CategoryDataset dataset, KeyToGroupMap map) {
    this.ds = dataset;//store reference to dataset to do update
    try {/* w  w w . j  av a  2s.  c  o m*/
        generateStackedBarChart(dataset);//generate a stacked bar chart first
        GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
        //set group series
        renderer.setSeriesToGroupMap(map);

        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setRenderer(renderer);
        //plot.setFixedLegendItems(generateItemCollection());
    } catch (Exception ex) {
        System.out.println("Error Generating grouped stacked bar chart :" + ex.getMessage());
    }
}

From source file:org.psystems.dicom.browser.server.stat.StatDailyLoadChartServlet2.java

private JFreeChart getChart(CategoryDataset dataset) {

    final JFreeChart chart = ChartFactory.createStackedBarChart("Stacked Bar Chart Demo 4", // chart title
            "Category", // domain axis label
            "", // range axis label
            dataset, // data
            PlotOrientation.VERTICAL, // the plot orientation
            true, // legend
            true, // tooltips
            false // urls
    );/*from  ww  w  .  jav  a 2 s  .  c om*/

    TextTitle title = new TextTitle("   ()", labelFont);
    title.setPaint(new Color(68, 99, 156));
    chart.setTitle(title);

    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    KeyToGroupMap map = new KeyToGroupMap("G1");
    map.mapKeyToGroup("product 1 (US)", "G1");
    map.mapKeyToGroup("product 1 (Europe)", "G1");

    renderer.setSeriesToGroupMap(map);

    BarPainter b = new StandardBarPainter();
    //        BarPainter b = new GradientBarPainter(0,0.9,0.9);

    renderer.setBarPainter(b);

    renderer.setSeriesPaint(0, color1);
    renderer.setSeriesPaint(1, color2);

    SubCategoryAxis domainAxis = new SubCategoryAxis("DCM  / JPG ");
    domainAxis.setCategoryMargin(0.05);
    domainAxis.setTickLabelFont(dateFont);
    //        domainAxis.addSubCategory("Product 1");
    //        domainAxis.addSubCategory("Product 2");
    //        domainAxis.addSubCategory("Product 3");

    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    plot.setDomainAxis(domainAxis);
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.red);
    plot.setRangeGridlinePaint(Color.lightGray);

    ValueAxis v = plot.getRangeAxis();
    v.setTickLabelFont(dateFont);
    //      plot.setRangeAxis(ValueAxis);

    //plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
    plot.setRenderer(renderer);
    plot.setFixedLegendItems(createLegendItems());
    return chart;

}

From source file:org.psystems.dicom.browser.server.stat.StatClientRequestsChartServlet2.java

private JFreeChart getChart(CategoryDataset dataset) {

    final JFreeChart chart = ChartFactory.createStackedBarChart("Stacked Bar Chart Demo 4", // chart title
            "Category", // domain axis label
            "", // range axis label
            dataset, // data
            PlotOrientation.VERTICAL, // the plot orientation
            true, // legend
            true, // tooltips
            false // urls
    );//ww  w .  j a  v a  2s  . c om

    TextTitle title = new TextTitle("? ? ? (.)",
            labelFont);
    title.setPaint(new Color(68, 99, 156));
    chart.setTitle(title);

    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    KeyToGroupMap map = new KeyToGroupMap("G1");
    map.mapKeyToGroup("product 1 (US)", "G1");
    map.mapKeyToGroup("product 1 (Europe)", "G1");

    renderer.setSeriesToGroupMap(map);

    BarPainter b = new StandardBarPainter();
    //        BarPainter b = new GradientBarPainter(0,0.9,0.9);

    renderer.setBarPainter(b);

    renderer.setSeriesPaint(0, color1);
    renderer.setSeriesPaint(1, color2);

    SubCategoryAxis domainAxis = new SubCategoryAxis(" / ");
    domainAxis.setCategoryMargin(0.05);
    domainAxis.setTickLabelFont(dateFont);
    //        domainAxis.addSubCategory("Product 1");
    //        domainAxis.addSubCategory("Product 2");
    //        domainAxis.addSubCategory("Product 3");

    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    plot.setDomainAxis(domainAxis);
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.red);
    plot.setRangeGridlinePaint(Color.lightGray);

    ValueAxis v = plot.getRangeAxis();
    v.setTickLabelFont(dateFont);
    //      plot.setRangeAxis(ValueAxis);

    //plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
    plot.setRenderer(renderer);
    plot.setFixedLegendItems(createLegendItems());
    return chart;

}

From source file:CPU.StackedBarChartExample1.java

/**
 * Create chart/*  ww w  .  ja  va  2s .c om*/
 * @param dataset
 * @return
 */
private JFreeChart createChart(final CategoryDataset dataset) {

    final JFreeChart stackedChart = ChartFactory.createStackedBarChart("Stacked Bar Chart", "Category", "Value",
            dataset, PlotOrientation.VERTICAL, true, true, false);

    //create group 
    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    KeyToGroupMap map = new KeyToGroupMap("G1");
    map.mapKeyToGroup("Toyota (US)", "G1");
    map.mapKeyToGroup("Toyota (Europe)", "G1");
    map.mapKeyToGroup("Toyota (Asia)", "G1");

    map.mapKeyToGroup("Ford (US)", "G2");
    map.mapKeyToGroup("Ford (Europe)", "G2");
    map.mapKeyToGroup("Ford (Asia)", "G2");

    map.mapKeyToGroup("BMW (US)", "G3");
    map.mapKeyToGroup("BMW (Europe)", "G3");
    map.mapKeyToGroup("BMW (Asia)", "G3");
    renderer.setSeriesToGroupMap(map);
    //margin between bar.
    renderer.setItemMargin(0.03);
    //end

    SubCategoryAxis dom_axis = new SubCategoryAxis("Car Production / Month");
    //Margin between group
    dom_axis.setCategoryMargin(0.06);
    //end

    dom_axis.addSubCategory("Toyota");
    dom_axis.addSubCategory("Ford");
    dom_axis.addSubCategory("BMW");

    CategoryPlot plot = (CategoryPlot) stackedChart.getPlot();
    plot.setDomainAxis(dom_axis);
    plot.setRenderer(renderer);

    return stackedChart;
}