Example usage for org.jfree.chart LegendItem getLabel

List of usage examples for org.jfree.chart LegendItem getLabel

Introduction

In this page you can find the example usage for org.jfree.chart LegendItem getLabel.

Prototype

public String getLabel() 

Source Link

Document

Returns the label.

Usage

From source file:com.hmsinc.epicenter.webapp.chart.ChartService.java

/**
 * @param chart/* ww  w.ja  va  2s  . com*/
 * @return
 */
private static void configureTitleAndLegend(final JFreeChart chart, final AbstractChart adapter) {

    final TextTitle title = chart.getTitle();
    if (title != null) {
        title.setFont(new Font("Arial", Font.BOLD, 12));
        // title.setBackgroundPaint(Color.CYAN);
        title.setTextAlignment(HorizontalAlignment.LEFT);
        title.setHorizontalAlignment(HorizontalAlignment.CENTER);
        title.setMargin(0, 4, 5, 6);
    }

    if (chart.getLegend() != null) {
        chart.removeLegend();

        final LegendTitle legend = new LegendTitle(chart.getPlot(), new SNColumnArrangement(0, 0),
                new ColumnArrangement(HorizontalAlignment.CENTER, VerticalAlignment.CENTER, 0, 0));

        legend.setItemFont(LEGEND_FONT);
        legend.setPosition(RectangleEdge.BOTTOM);
        legend.setHorizontalAlignment(HorizontalAlignment.CENTER);
        legend.setBackgroundPaint(Color.WHITE);
        legend.setFrame(new LineBorder());
        legend.setMargin(0, 4, 5, 6);

        chart.addLegend(legend);

        // Now we'll try to remove any duplicate items from the legend..
        final Map<String, Integer> keys = new HashMap<String, Integer>();
        final LegendItemCollection items = new LegendItemCollection();

        for (LegendItemSource source : legend.getSources()) {

            for (int i = 0; i < source.getLegendItems().getItemCount(); i++) {

                final LegendItem item = source.getLegendItems().get(i);
                if (!keys.containsKey(item.getLabel())) {
                    keys.put(item.getLabel(), i);
                    items.add(item);
                }
            }
        }

        legend.setSources(new LegendItemSource[] { new LegendItemSource() {

            /*
             * (non-Javadoc)
             * 
             * @see org.jfree.chart.LegendItemSource#getLegendItems()
             */
            public LegendItemCollection getLegendItems() {
                return items;
            }

        } });
    }
}

From source file:org.owasp.benchmark.score.report.LegendXYItemLabelGenerator.java

@Override
public String generateLabel(XYDataset dataset, int series, int item) {
    LegendItem legendItem = legendItems.get(item);
    return legendItem.getLabel();
}

From source file:net.sf.dynamicreports.test.jasper.chart.ChartSeriesColorsByNameTest.java

@Override
public void test() {
    super.test();

    numberOfPagesTest(1);//w ww  .j  a  va2  s  .c o m

    chartCountTest("summary.chart1", 1);
    JFreeChart chart = getChart("summary.chart1", 0);
    CategoryItemRenderer renderer1 = chart.getCategoryPlot().getRenderer();
    CategoryDataset dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    chartCountTest("summary.chart2", 1);
    chart = getChart("summary.chart2", 0);
    CategoryItemRenderer renderer2 = chart.getCategoryPlot().getRenderer();
    CategoryDataset dataset2 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset2.getRowCount(); i++) {
        String key = (String) dataset2.getRowKey(i);
        key = StringUtils.substringAfter(key, GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer2.getSeriesPaint(i));
    }
    for (int i = 0; i < chart.getCategoryPlot().getFixedLegendItems().getItemCount(); i++) {
        LegendItem legendItem = chart.getCategoryPlot().getFixedLegendItems().get(i);
        Assert.assertNotNull("null series color", colors.get(legendItem.getLabel()));
        Assert.assertEquals("series color", colors.get(legendItem.getLabel()), legendItem.getFillPaint());
    }

    chartCountTest("summary.chart3", 1);
    chart = getChart("summary.chart3", 0);
    PiePlot plot3 = (PiePlot) chart.getPlot();
    PieDataset dataset3 = plot3.getDataset();
    for (int i = 0; i < dataset3.getItemCount(); i++) {
        String key = (String) dataset3.getKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), plot3.getSectionPaint(key));
    }

    chartCountTest("summary.chart4", 1);
    chart = getChart("summary.chart4", 0);
    XYItemRenderer renderer4 = chart.getXYPlot().getRenderer();
    XYDataset dataset4 = chart.getXYPlot().getDataset();
    for (int i = 0; i < dataset4.getSeriesCount(); i++) {
        String key = (String) dataset4.getSeriesKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer4.getSeriesPaint(i));
    }
}

From source file:com.haskins.cloudtrailviewer.sidebar.EventsChart.java

@Override
public void update() {

    String source = customGroup.getSelection().getActionCommand();

    String actionCommand = topGroup.getSelection().getActionCommand();
    int periodPos = actionCommand.indexOf(".");
    String topStr = actionCommand.substring(periodPos + 1);
    int top = Integer.parseInt(topStr);

    List<Map.Entry<String, Integer>> chartEvents = ChartUtils.getTopEvents(eventDb.getEvents(), top, source);

    chartCards.removeAll();//w  w w. j a v a  2s  .  c  om

    String style = styleGroup.getSelection().getActionCommand();

    String orientationCommand = orientationGroup.getSelection().getActionCommand();
    PlotOrientation orientation = PlotOrientation.VERTICAL;
    if (orientationCommand.contains("horizontal")) {
        orientation = PlotOrientation.HORIZONTAL;
    }

    ChartPanel cp = ChartFactory.createChart(style, chartEvents, 320, 240, orientation);
    chartCards.add(cp, "");
    chartCards.revalidate();

    for (int i = defaultTableModel.getRowCount() - 1; i >= 0; i--) {
        defaultTableModel.removeRow(i);
    }

    LegendItemCollection legendItems = ((ChartPanel) chartCards.getComponent(0)).getChart().getPlot()
            .getLegendItems();

    for (Map.Entry entry : chartEvents) {

        Color col = null;
        String key = (String) entry.getKey();
        for (int i = 0; i < legendItems.getItemCount(); i++) {
            LegendItem item = legendItems.get(i);
            if (item.getLabel().equalsIgnoreCase(key)) {
                col = (Color) item.getFillPaint();
            }
        }

        defaultTableModel.addRow(new Object[] { col, key, entry.getValue() });
    }
}

From source file:unalcol.termites.boxplots.ECALMessages.java

private LegendTitle modifyLegend(JFreeChart chart, CategoryPlot plot) {
    LegendTitle legend = chart.getLegend();
    chart.removeLegend();/* w  ww  .  j av  a2 s  .c  o m*/
    LegendItemSource[] items = legend.getSources();
    for (LegendItemSource item : items) {
        //LegendItemCollection collection = items[i].getLegendItems();
        LegendItemCollection collection = plot.getLegendItems();

        for (Iterator iter = collection.iterator(); iter.hasNext();) {
            LegendItem element = (LegendItem) iter.next();
            System.out.println(" ## #" + element.getLabel());
        }
    }

    return legend;
}

From source file:com.haskins.cloudtrailviewer.sidebar.AbstractChart.java

/**
 * updates the chart, changing the menus if needed and updating the contents
 * of the Key table./* w  w w. ja v a2 s.  c o m*/
 * @param chartData 
 */
void updateChart(List<Map.Entry<String, Integer>> chartData) {

    chartCards.removeAll();

    for (int i = defaultTableModel.getRowCount() - 1; i >= 0; i--) {
        defaultTableModel.removeRow(i);
    }

    if (chartData != null && chartData.size() > 0) {

        String style = styleGroup.getSelection().getActionCommand();

        String orientationCommand = orientationGroup.getSelection().getActionCommand();
        PlotOrientation orientation = PlotOrientation.VERTICAL;
        if (orientationCommand.contains("horizontal")) {
            orientation = PlotOrientation.HORIZONTAL;
        }

        ChartPanel cp = ChartFactory.createChart(style, chartData, 320, 240, orientation);
        chartCards.add(cp, "");
        chartCards.revalidate();

        LegendItemCollection legendItems = ((ChartPanel) chartCards.getComponent(0)).getChart().getPlot()
                .getLegendItems();

        for (Map.Entry entry : chartData) {

            Color col = null;
            String key = (String) entry.getKey();
            for (int i = 0; i < legendItems.getItemCount(); i++) {
                LegendItem item = legendItems.get(i);
                if (item.getLabel().equalsIgnoreCase(key)) {
                    col = (Color) item.getFillPaint();
                }
            }

            if (key.contains(":i-")) {

                int posColon = key.indexOf(':');
                key = key.substring(posColon + 1);
            }

            defaultTableModel.addRow(new Object[] { col, key, entry.getValue() });
        }
    }
}

From source file:com.haskins.cloudtrailviewer.sidebar.EventsStats.java

private void updateChart() {

    String source = sourceGroup.getSelection().getActionCommand();

    String actionCommand = topGroup.getSelection().getActionCommand();
    int periodPos = actionCommand.indexOf(".");
    String topStr = actionCommand.substring(periodPos + 1);
    int top = Integer.parseInt(topStr);

    List<Map.Entry<String, Integer>> chartEvents = ChartUtils.getTopEvents(eventDb.getEvents(), top, source);

    chartCards.removeAll();// ww w.j  ava 2s  . co  m

    String style = styleGroup.getSelection().getActionCommand();

    String orientationCommand = orientationGroup.getSelection().getActionCommand();
    PlotOrientation orientation = PlotOrientation.VERTICAL;
    if (orientationCommand.contains("horizontal")) {
        orientation = PlotOrientation.HORIZONTAL;
    }

    ChartPanel cp = ChartFactory.createChart(style, chartEvents, 320, 240, orientation);
    chartCards.add(cp, "");
    chartCards.revalidate();

    for (int i = defaultTableModel.getRowCount() - 1; i >= 0; i--) {
        defaultTableModel.removeRow(i);
    }

    LegendItemCollection legendItems = ((ChartPanel) chartCards.getComponent(0)).getChart().getPlot()
            .getLegendItems();

    for (Map.Entry entry : chartEvents) {

        Color col = null;
        String key = (String) entry.getKey();
        for (int i = 0; i < legendItems.getItemCount(); i++) {
            LegendItem item = legendItems.get(i);
            if (item.getLabel().equalsIgnoreCase(key)) {
                col = (Color) item.getFillPaint();
            }
        }

        defaultTableModel.addRow(new Object[] { col, key, entry.getValue() });
    }
}

From source file:org.geotools.renderer.chart.GeometryRenderer.java

@Override
public LegendItem getLegendItem(int datasetIndex, int series) {
    LegendItem li = super.getLegendItem(datasetIndex, series);

    Stroke outlineStroke = getItemStroke(series, 0);
    Paint fillPaint = li.getFillPaint();
    Paint outlinePaint = fillPaint;

    if (!fillCoordinates) {
        fillPaint = new Color(255, 255, 255, 255);
    }/*  ww  w  .  j a v a2s . c om*/
    return new LegendItem(li.getLabel(), li.getDescription(), li.getToolTipText(), li.getURLText(),
            li.getShape(), fillPaint, outlineStroke, outlinePaint);
}

From source file:unikn.dbis.univis.visualization.graph.plaf.VGraphUI.java

/**
 * Creates the listener responsible for calling the correct handlers based
 * on mouse events, and to select invidual cells.
 *///ww  w.  j a va2  s  . co m
protected MouseListener createMouseListener() {

    return new MouseHandler() {

        /**
         * Invoked when a mouse button has been pressed on a component.
         *
         //@Override
         public void mousePressed(MouseEvent e) {
                
         Object o = graph.getFirstCellForLocation(e.getX(), e.getY());
                
         if (o instanceof VGraphCell) {
                
         VGraphCell cell = (VGraphCell) o;
                
         JPopupMenu menu = new JPopupMenu();
                
         VChartPanel chartPanel = (VChartPanel) cell.getUserObject();
                
         if (chartPanel.isShowPopUp()) {
                
         LegendItemCollection collect = chartPanel.getChart().getPlot().getLegendItems();
         JMenu first = new JMenu("1-39");
         int checker = 0;
                
         for (Iterator iter = collect.iterator(); iter.hasNext();) {
         LegendItem item = (LegendItem) iter.next();
         checker++;
         first.add(new JMenuItem(item.getLabel()));
         if ((checker % 40) == 0) {
         menu.add(first);
                
         first = new JMenu("" + checker + "-" + (checker + 39));
         }
         if (!iter.hasNext()) {
         menu.add(first);
         }
         }
                
         menu.show(graph, e.getX(), e.getY());
         }
         }
                
         super.mousePressed(e);
         }
         */

        /**
         * Invoked when a mouse button has been pressed on a component.
         */
        @Override
        public void mousePressed(MouseEvent e) {

            Object o = graph.getFirstCellForLocation(e.getX(), e.getY());

            if (SwingUtilities.isLeftMouseButton(e) && e.isAltDown()) {
                if (o instanceof VGraphCell) {

                    VGraphCell cell = (VGraphCell) o;

                    JPopupMenu menu = new JPopupMenu();

                    VChartPanel chartPanel = (VChartPanel) cell.getUserObject();

                    LegendItemCollection collect = chartPanel.getChart().getPlot().getLegendItems();
                    JMenu first = new JMenu("1-39");
                    int checker = 0;

                    for (Iterator iter = collect.iterator(); iter.hasNext();) {
                        LegendItem item = (LegendItem) iter.next();
                        checker++;
                        first.add(new JMenuItem(item.getLabel()));
                        if ((checker % 40) == 0) {
                            menu.add(first);

                            first = new JMenu("" + checker + "-" + (checker + 39));
                        }
                        if (!iter.hasNext()) {
                            menu.add(first);
                        }
                    }

                    menu.show(graph, e.getX(), e.getY());
                }
            }

            super.mousePressed(e);

            if (o != null && o instanceof VGraphCell) {

                VGraphCell cell = (VGraphCell) o;

                o = cell.getUserObject();

                if (o != null && o instanceof VChartPanel) {
                    VChartPanel chart = (VChartPanel) o;

                    for (MouseListener l : chart.getMouseListeners()) {
                        l.mousePressed(e);
                    }
                }
            }
        }

        // Event may be null when called to cancel the current operation.
        @Override
        public void mouseReleased(MouseEvent e) {
            super.mouseReleased(e);

            Object o = graph.getFirstCellForLocation(e.getX(), e.getY());

            if (o != null && o instanceof VGraphCell) {

                VGraphCell cell = (VGraphCell) o;

                o = cell.getUserObject();

                if (o != null && o instanceof VChartPanel) {
                    VChartPanel chart = (VChartPanel) o;

                    for (MouseListener l : chart.getMouseListeners()) {
                        l.mouseReleased(e);
                    }
                }
            }
        }

        /**
         * Invoked when the mouse has been clicked on a component.
         */
        @Override
        public void mouseClicked(MouseEvent e) {
            super.mouseClicked(e);

            Object o = graph.getFirstCellForLocation(e.getX(), e.getY());

            if (o != null && o instanceof VGraphCell) {

                VGraphCell cell = (VGraphCell) o;

                o = cell.getUserObject();

                if (o != null && o instanceof VChartPanel) {
                    VChartPanel chart = (VChartPanel) o;

                    if (SwingUtilities.isRightMouseButton(e)) {
                        JPopupMenu menu = chart.createPopupMenu(true, true, true, true);

                        menu.show(graph, e.getX(), e.getY());
                    }

                    /*
                    for (MouseListener l : chart.getMouseListeners()) {
                    System.out.println("LISTENS CLI");
                    l.mouseClicked(e);
                    }
                    */
                }
            }
        }

        /*
        // Event may be null when called to cancel the current operation.
        @Override
        public void mouseReleased(MouseEvent e) {
        super.mouseReleased(e);
                
        Object[] cells = graphSelectionModel.getSelectionCells();
                
        Rectangle2D bounds = graph.getCellBounds(cells);
                
        if (bounds != null) {
            Rectangle2D b2 = graph.toScreen((Rectangle2D) bounds.clone());
            graph.scrollRectToVisible(new Rectangle((int) b2.getX(), (int) b2.getY(), (int) b2.getWidth(), (int) b2.getHeight()));
        }
        }
        */

        /**
         * Invoked when the mouse pointer has been moved on a component (with no
         * buttons down).
         */
        @Override
        public void mouseMoved(MouseEvent e) {

            if (graph.isMoveable()) {
                super.mouseMoved(e);
            }

            Object o = graph.getFirstCellForLocation(e.getX(), e.getY());

            if (o != null && o instanceof VGraphCell) {

                selectedCell = (VGraphCell) o;

                Rectangle2D bounds = graph.getCellBounds(selectedCell);

                menu.show(graph, (int) (bounds.getX() + bounds.getWidth()),
                        (int) bounds.getY() + (int) (bounds.getHeight() - menu.getHeight()));
            }
        }
    };
}

From source file:net.sf.dynamicreports.test.jasper.chart.ChartSeriesOrderTest.java

@Override
public void test() {
    super.test();

    numberOfPagesTest(1);/*  w  w w  . j  av  a 2s  . c o m*/

    chartCountTest("summary.chart1", 1);
    JFreeChart chart = getChart("summary.chart1", 0);
    CategoryItemRenderer renderer1 = chart.getCategoryPlot().getRenderer();
    CategoryDataset dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    String[] categories = new String[] { "value1", "value2" };
    String[] series = new String[] { "a", "b", "c", "d" };
    Number[][] values = new Number[][] { { 5d, 2d, 4d, 2d }, { 3d, null, 2d, 4d } };

    chartCategoryCountTest("summary.chart1", 0, 2);
    chartSeriesCountTest("summary.chart1", 0, 4);
    chartDataTest("summary.chart1", 0, categories, series, values);

    chartCountTest("summary.chart2", 1);
    chart = getChart("summary.chart2", 0);
    CategoryItemRenderer renderer2 = chart.getCategoryPlot().getRenderer();
    CategoryDataset dataset2 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset2.getRowCount(); i++) {
        String key = (String) dataset2.getRowKey(i);
        key = StringUtils.substringAfter(key, GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer2.getSeriesPaint(i));
    }
    for (int i = 0; i < chart.getCategoryPlot().getFixedLegendItems().getItemCount(); i++) {
        LegendItem legendItem = chart.getCategoryPlot().getFixedLegendItems().get(i);
        Assert.assertNotNull("null series color", colors.get(legendItem.getLabel()));
        Assert.assertEquals("series color", colors.get(legendItem.getLabel()), legendItem.getFillPaint());
    }

    series = new String[] { "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d" };
    values = new Number[][] { { 1d, 2d, 3d, 0d, 4d, 0d, 1d, 2d }, { null, null, null, 0d, 3d, 0d, 2d, 4d } };
    chartCategoryCountTest("summary.chart2", 0, 2);
    chartSeriesCountTest("summary.chart2", 0, 8);
    chartDataTest("summary.chart2", 0, categories, series, values);

    chartCountTest("summary.chart3", 1);
    chart = getChart("summary.chart3", 0);
    renderer1 = chart.getCategoryPlot().getRenderer();
    dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    categories = new String[] { "value1", "value2" };
    series = new String[] { "d", "c", "b", "a" };
    values = new Number[][] { { 2d, 4d, 2d, 5d }, { 4d, 2d, null, 3d } };

    chartCategoryCountTest("summary.chart3", 0, 2);
    chartSeriesCountTest("summary.chart3", 0, 4);
    chartDataTest("summary.chart3", 0, categories, series, values);

    chartCountTest("summary.chart4", 1);
    chart = getChart("summary.chart4", 0);
    renderer2 = chart.getCategoryPlot().getRenderer();
    dataset2 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset2.getRowCount(); i++) {
        String key = (String) dataset2.getRowKey(i);
        key = StringUtils.substringAfter(key, GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer2.getSeriesPaint(i));
    }
    for (int i = 0; i < chart.getCategoryPlot().getFixedLegendItems().getItemCount(); i++) {
        LegendItem legendItem = chart.getCategoryPlot().getFixedLegendItems().get(i);
        Assert.assertNotNull("null series color", colors.get(legendItem.getLabel()));
        Assert.assertEquals("series color", colors.get(legendItem.getLabel()), legendItem.getFillPaint());
    }

    series = new String[] { "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a" };

    values = new Number[][] { { 2d, 1d, 0d, 4d, 0d, 3d, 2d, 1d }, { 4d, 2d, 0d, 3d, 0d, null, null, null } };
    chartCategoryCountTest("summary.chart4", 0, 2);
    chartSeriesCountTest("summary.chart4", 0, 8);
    chartDataTest("summary.chart4", 0, categories, series, values);

    chartCountTest("summary.chart5", 1);
    chart = getChart("summary.chart5", 0);
    renderer1 = chart.getCategoryPlot().getRenderer();
    dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    categories = new String[] { "value1", "value2" };
    series = new String[] { "c", "b", "a", "d" };
    values = new Number[][] { { 4d, 2d, 5d, 2d }, { 2d, null, 3d, 4d } };

    chartCategoryCountTest("summary.chart5", 0, 2);
    chartSeriesCountTest("summary.chart5", 0, 4);
    chartDataTest("summary.chart5", 0, categories, series, values);

    chartCountTest("summary.chart6", 1);
    chart = getChart("summary.chart6", 0);
    renderer2 = chart.getCategoryPlot().getRenderer();
    dataset2 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset2.getRowCount(); i++) {
        String key = (String) dataset2.getRowKey(i);
        key = StringUtils.substringAfter(key, GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer2.getSeriesPaint(i));
    }
    for (int i = 0; i < chart.getCategoryPlot().getFixedLegendItems().getItemCount(); i++) {
        LegendItem legendItem = chart.getCategoryPlot().getFixedLegendItems().get(i);
        Assert.assertNotNull("null series color", colors.get(legendItem.getLabel()));
        Assert.assertEquals("series color", colors.get(legendItem.getLabel()), legendItem.getFillPaint());
    }

    series = new String[] { "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d" };
    values = new Number[][] { { 3d, 2d, 1d, 0d, 1d, 0d, 4d, 2d }, { null, null, null, 0d, 2d, 0d, 3d, 4d } };
    chartCategoryCountTest("summary.chart6", 0, 2);
    chartSeriesCountTest("summary.chart6", 0, 8);
    chartDataTest("summary.chart6", 0, categories, series, values);

    chartCountTest("summary.chart7", 1);
    chart = getChart("summary.chart7", 0);
    renderer1 = chart.getCategoryPlot().getRenderer();
    dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    categories = new String[] { "value1", "value2" };
    series = new String[] { "d", "c", "b", "a" };
    values = new Number[][] { { 2d, 5d, 2d, 4d }, { 4d, 3d, null, 2d } };

    chartCategoryCountTest("summary.chart7", 0, 2);
    chartSeriesCountTest("summary.chart7", 0, 4);
    chartDataTest("summary.chart7", 0, categories, series, values);

    chartCountTest("summary.chart8", 1);
    chart = getChart("summary.chart8", 0);
    renderer2 = chart.getCategoryPlot().getRenderer();
    dataset2 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset2.getRowCount(); i++) {
        String key = (String) dataset2.getRowKey(i);
        key = StringUtils.substringAfter(key, GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer2.getSeriesPaint(i));
    }
    for (int i = 0; i < chart.getCategoryPlot().getFixedLegendItems().getItemCount(); i++) {
        LegendItem legendItem = chart.getCategoryPlot().getFixedLegendItems().get(i);
        Assert.assertNotNull("null series color", colors.get(legendItem.getLabel()));
        Assert.assertEquals("series color", colors.get(legendItem.getLabel()), legendItem.getFillPaint());
    }

    series = new String[] { "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "2" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "d",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "a",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "b",
            "1" + GroupedStackedBarRendererCustomizer.GROUP_SERIES_KEY + "c" };

    values = new Number[][] { { 2d, 4d, 0d, 1d, 0d, 1d, 2d, 3d }, { 4d, 3d, 0d, 2d, 0d, null, null, null } };
    chartCategoryCountTest("summary.chart8", 0, 2);
    chartSeriesCountTest("summary.chart8", 0, 8);
    chartDataTest("summary.chart8", 0, categories, series, values);

    chartCountTest("summary.chart9", 1);
    chart = getChart("summary.chart9", 0);
    renderer1 = chart.getCategoryPlot().getRenderer();
    dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    categories = new String[] { "value1", "value2" };
    series = new String[] { "c", "d", "a", "b" };
    values = new Number[][] { { 4d, 2d, 5d, 2d }, { 2d, 4d, 3d, null } };

    chartCategoryCountTest("summary.chart9", 0, 2);
    chartSeriesCountTest("summary.chart9", 0, 4);
    chartDataTest("summary.chart9", 0, categories, series, values);

    chartCountTest("summary.chart10", 1);
    chart = getChart("summary.chart10", 0);
    renderer1 = chart.getCategoryPlot().getRenderer();
    dataset1 = chart.getCategoryPlot().getDataset();
    for (int i = 0; i < dataset1.getRowCount(); i++) {
        String key = (String) dataset1.getRowKey(i);
        Assert.assertNotNull("null series color", colors.get(key));
        Assert.assertEquals("series color", colors.get(key), renderer1.getSeriesPaint(i));
    }

    categories = new String[] { "value1", "value2" };
    series = new String[] { "c", "b", "a", "d" };
    values = new Number[][] { { 4d, 2d, 5d, 2d }, { 2d, null, 3d, 4d } };

    chartCategoryCountTest("summary.chart10", 0, 2);
    chartSeriesCountTest("summary.chart10", 0, 4);
    chartDataTest("summary.chart10", 0, categories, series, values);
}