Example usage for org.jfree.data.xy XYIntervalSeries add

List of usage examples for org.jfree.data.xy XYIntervalSeries add

Introduction

In this page you can find the example usage for org.jfree.data.xy XYIntervalSeries add.

Prototype

public void add(double x, double xLow, double xHigh, double y, double yLow, double yHigh) 

Source Link

Document

Adds a data item to the series and sends a SeriesChangeEvent to all registered listeners.

Usage

From source file:org.optaplanner.benchmark.impl.statistic.single.pickedmovetypestepscore.PickedMoveTypeStepScoreDiffSingleStatistic.java

@Override
public void writeGraphFiles(BenchmarkReport benchmarkReport) {
    List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList = new ArrayList<Map<String, XYIntervalSeries>>(
            BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
    for (PickedMoveTypeStepScoreDiffStatisticPoint point : getPointList()) {
        long timeMillisSpent = point.getTimeMillisSpent();
        String moveType = point.getMoveType();
        double[] levelValues = ScoreUtils.extractLevelDoubles(point.getStepScoreDiff());
        for (int i = 0; i < levelValues.length && i < BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE; i++) {
            if (i >= moveTypeToSeriesMapList.size()) {
                moveTypeToSeriesMapList.add(new LinkedHashMap<String, XYIntervalSeries>());
            }/*  ww  w . j a  va  2  s . c  om*/
            Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
            XYIntervalSeries series = moveTypeToSeriesMap.get(moveType);
            if (series == null) {
                series = new XYIntervalSeries(moveType);
                moveTypeToSeriesMap.put(moveType, series);
            }
            double yValue = levelValues[i];
            // In an XYInterval the yLow must be lower than yHigh
            series.add(timeMillisSpent, timeMillisSpent, timeMillisSpent, yValue, (yValue > 0.0) ? 0.0 : yValue,
                    (yValue > 0.0) ? yValue : 0.0);
        }
    }
    graphFileList = new ArrayList<File>(moveTypeToSeriesMapList.size());
    for (int scoreLevelIndex = 0; scoreLevelIndex < moveTypeToSeriesMapList.size(); scoreLevelIndex++) {
        XYPlot plot = createPlot(benchmarkReport, scoreLevelIndex);
        XYItemRenderer renderer = new YIntervalRenderer();
        plot.setRenderer(renderer);
        XYIntervalSeriesCollection seriesCollection = new XYIntervalSeriesCollection();
        for (XYIntervalSeries series : moveTypeToSeriesMapList.get(scoreLevelIndex).values()) {
            seriesCollection.addSeries(series);
        }
        plot.setDataset(seriesCollection);
        JFreeChart chart = new JFreeChart(singleBenchmarkResult.getName()
                + " picked move type step score diff level " + scoreLevelIndex + " statistic",
                JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        graphFileList.add(
                writeChartToImageFile(chart, "PickedMoveTypeStepScoreDiffStatisticLevel" + scoreLevelIndex));
    }
}

From source file:org.optaplanner.benchmark.impl.statistic.subsingle.pickedmovetypestepscore.PickedMoveTypeStepScoreDiffSubSingleStatistic.java

@Override
public void writeGraphFiles(BenchmarkReport benchmarkReport) {
    List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList = new ArrayList<Map<String, XYIntervalSeries>>(
            BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
    for (PickedMoveTypeStepScoreDiffStatisticPoint point : getPointList()) {
        long timeMillisSpent = point.getTimeMillisSpent();
        String moveType = point.getMoveType();
        double[] levelValues = ScoreUtils.extractLevelDoubles(point.getStepScoreDiff());
        for (int i = 0; i < levelValues.length && i < BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE; i++) {
            if (i >= moveTypeToSeriesMapList.size()) {
                moveTypeToSeriesMapList.add(new LinkedHashMap<String, XYIntervalSeries>());
            }//from ww  w. j av a  2s . com
            Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
            XYIntervalSeries series = moveTypeToSeriesMap.get(moveType);
            if (series == null) {
                series = new XYIntervalSeries(moveType);
                moveTypeToSeriesMap.put(moveType, series);
            }
            double yValue = levelValues[i];
            // In an XYInterval the yLow must be lower than yHigh
            series.add(timeMillisSpent, timeMillisSpent, timeMillisSpent, yValue, (yValue > 0.0) ? 0.0 : yValue,
                    (yValue > 0.0) ? yValue : 0.0);
        }
    }
    graphFileList = new ArrayList<File>(moveTypeToSeriesMapList.size());
    for (int scoreLevelIndex = 0; scoreLevelIndex < moveTypeToSeriesMapList.size(); scoreLevelIndex++) {
        XYPlot plot = createPlot(benchmarkReport, scoreLevelIndex);
        XYItemRenderer renderer = new YIntervalRenderer();
        plot.setRenderer(renderer);
        XYIntervalSeriesCollection seriesCollection = new XYIntervalSeriesCollection();
        for (XYIntervalSeries series : moveTypeToSeriesMapList.get(scoreLevelIndex).values()) {
            seriesCollection.addSeries(series);
        }
        plot.setDataset(seriesCollection);
        JFreeChart chart = new JFreeChart(subSingleBenchmarkResult.getName()
                + " picked move type step score diff level " + scoreLevelIndex + " statistic",
                JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        graphFileList.add(
                writeChartToImageFile(chart, "PickedMoveTypeStepScoreDiffStatisticLevel" + scoreLevelIndex));
    }
}

From source file:org.optaplanner.benchmark.impl.statistic.single.pickedmovetypebestscore.PickedMoveTypeBestScoreDiffSingleStatistic.java

@Override
public void writeGraphFiles(BenchmarkReport benchmarkReport) {
    List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList = new ArrayList<Map<String, XYIntervalSeries>>(
            BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
    for (PickedMoveTypeBestScoreDiffStatisticPoint point : getPointList()) {
        long timeMillisSpent = point.getTimeMillisSpent();
        String moveType = point.getMoveType();
        double[] levelValues = ScoreUtils.extractLevelDoubles(point.getBestScoreDiff());
        for (int i = 0; i < levelValues.length && i < BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE; i++) {
            if (i >= moveTypeToSeriesMapList.size()) {
                moveTypeToSeriesMapList.add(new LinkedHashMap<String, XYIntervalSeries>());
            }//from   w w  w . j  a v  a 2  s  .c  o m
            Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
            XYIntervalSeries series = moveTypeToSeriesMap.get(moveType);
            if (series == null) {
                series = new XYIntervalSeries(moveType);
                moveTypeToSeriesMap.put(moveType, series);
            }
            double yValue = levelValues[i];
            // In an XYInterval the yLow must be lower than yHigh
            series.add(timeMillisSpent, timeMillisSpent, timeMillisSpent, yValue, (yValue > 0.0) ? 0.0 : yValue,
                    (yValue > 0.0) ? yValue : 0.0);
        }
    }
    graphFileList = new ArrayList<File>(moveTypeToSeriesMapList.size());
    for (int scoreLevelIndex = 0; scoreLevelIndex < moveTypeToSeriesMapList.size(); scoreLevelIndex++) {
        XYPlot plot = createPlot(benchmarkReport, scoreLevelIndex);
        XYItemRenderer renderer = new YIntervalRenderer();
        plot.setRenderer(renderer);
        XYIntervalSeriesCollection seriesCollection = new XYIntervalSeriesCollection();
        for (XYIntervalSeries series : moveTypeToSeriesMapList.get(scoreLevelIndex).values()) {
            seriesCollection.addSeries(series);
        }
        plot.setDataset(seriesCollection);
        JFreeChart chart = new JFreeChart(singleBenchmarkResult.getName()
                + " picked move type best score diff level " + scoreLevelIndex + " statistic",
                JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        graphFileList.add(
                writeChartToImageFile(chart, "PickedMoveTypeBestScoreDiffStatisticLevel" + scoreLevelIndex));
    }
}

From source file:org.optaplanner.benchmark.impl.statistic.subsingle.pickedmovetypebestscore.PickedMoveTypeBestScoreDiffSubSingleStatistic.java

@Override
public void writeGraphFiles(BenchmarkReport benchmarkReport) {
    List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList = new ArrayList<Map<String, XYIntervalSeries>>(
            BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
    for (PickedMoveTypeBestScoreDiffStatisticPoint point : getPointList()) {
        long timeMillisSpent = point.getTimeMillisSpent();
        String moveType = point.getMoveType();
        double[] levelValues = ScoreUtils.extractLevelDoubles(point.getBestScoreDiff());
        for (int i = 0; i < levelValues.length && i < BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE; i++) {
            if (i >= moveTypeToSeriesMapList.size()) {
                moveTypeToSeriesMapList.add(new LinkedHashMap<String, XYIntervalSeries>());
            }/*  www.  ja  va 2s.  c  o m*/
            Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
            XYIntervalSeries series = moveTypeToSeriesMap.get(moveType);
            if (series == null) {
                series = new XYIntervalSeries(moveType);
                moveTypeToSeriesMap.put(moveType, series);
            }
            double yValue = levelValues[i];
            // In an XYInterval the yLow must be lower than yHigh
            series.add(timeMillisSpent, timeMillisSpent, timeMillisSpent, yValue, (yValue > 0.0) ? 0.0 : yValue,
                    (yValue > 0.0) ? yValue : 0.0);
        }
    }
    graphFileList = new ArrayList<File>(moveTypeToSeriesMapList.size());
    for (int scoreLevelIndex = 0; scoreLevelIndex < moveTypeToSeriesMapList.size(); scoreLevelIndex++) {
        XYPlot plot = createPlot(benchmarkReport, scoreLevelIndex);
        XYItemRenderer renderer = new YIntervalRenderer();
        plot.setRenderer(renderer);
        XYIntervalSeriesCollection seriesCollection = new XYIntervalSeriesCollection();
        for (XYIntervalSeries series : moveTypeToSeriesMapList.get(scoreLevelIndex).values()) {
            seriesCollection.addSeries(series);
        }
        plot.setDataset(seriesCollection);
        JFreeChart chart = new JFreeChart(subSingleBenchmarkResult.getName()
                + " picked move type best score diff level " + scoreLevelIndex + " statistic",
                JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        graphFileList.add(
                writeChartToImageFile(chart, "PickedMoveTypeBestScoreDiffStatisticLevel" + scoreLevelIndex));
    }
}

From source file:com.bt.aloha.batchtest.Chart.java

private XYIntervalSeriesCollection createUnitPerSecondAndDeviationDataset() {
    XYIntervalSeriesCollection seriesCollection = new XYIntervalSeriesCollection();
    List<Long> orderedRunIds = sort(metrics.keySet());
    for (Long runId : orderedRunIds) {
        List<Metrics> metricsList = metrics.get(runId);
        String testType = "";
        if (metricsList.size() != 0)
            testType = metricsList.get(0).getTestType();
        XYIntervalSeries series = new XYIntervalSeries("Run[" + testType + "]:" + runId);
        int size = metricsList.size();
        for (int i = 0; i < size; i++) {
            Metrics m = metricsList.get(i);
            int x = i;
            if (m.getThreadInfoObject() != null && m.getThreadInfoObject().getCurrentThreads() != 0) {
                x = m.getThreadInfoObject().getCurrentThreads();
            }//  ww  w.j  a v a  2s .c o  m
            double ups = m.getUnitsPerSecond();
            double v = m.getStandardDeviation();
            series.add(x, x, x, ups, ups - v / 2, ups + v / 2);
        }
        seriesCollection.addSeries(series);
    }
    return seriesCollection;
}

From source file:com.att.aro.ui.view.diagnostictab.plot.ScreenStatePlot.java

@Override
public void populate(XYPlot plot, AROTraceData analysis) {
    if (analysis == null) {
        logger.info("analysis data is null");
    } else {/*from  w  w  w  .j  a va2  s .c o  m*/
        screenData.removeAllSeries();
        TraceResultType resultType = analysis.getAnalyzerResult().getTraceresult().getTraceResultType();
        if (resultType.equals(TraceResultType.TRACE_FILE)) {
            logger.info("didn't get analysis trace data!");

        } else {
            TraceDirectoryResult traceresult = (TraceDirectoryResult) analysis.getAnalyzerResult()
                    .getTraceresult();

            XYIntervalSeries series = new XYIntervalSeries(ScreenState.SCREEN_ON);
            screenData.addSeries(series);

            // Populate the data set
            final Map<Double, ScreenStateInfo> dataMap = new HashMap<Double, ScreenStateInfo>();
            Iterator<ScreenStateInfo> iter = traceresult.getScreenStateInfos().iterator();
            if (iter.hasNext()) {
                while (iter.hasNext()) {
                    ScreenStateInfo screenEvent = iter.next();
                    if (screenEvent.getScreenState() == ScreenState.SCREEN_ON) {
                        series.add(screenEvent.getBeginTimeStamp(), screenEvent.getBeginTimeStamp(),
                                screenEvent.getEndTimeStamp(), 0.5, 0, 1);
                        dataMap.put(screenEvent.getBeginTimeStamp(), screenEvent);
                    }
                }
            }

            // Assign ToolTip to renderer
            XYItemRenderer renderer = plot.getRenderer();
            renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

                @Override
                public String generateToolTip(XYDataset dataset, int series, int item) {

                    ScreenStateInfo si = dataMap.get(dataset.getXValue(series, item));
                    if (si != null) {

                        StringBuffer displayInfo = new StringBuffer(
                                ResourceBundleHelper.getMessageString("screenstate.tooltip.prefix"));
                        int timeout = si.getScreenTimeout();
                        displayInfo.append(MessageFormat.format(
                                ResourceBundleHelper.getMessageString("screenstate.tooltip.content"),
                                ResourceBundleHelper.getEnumString(si.getScreenState()),
                                si.getScreenBrightness(), timeout > 0 ? timeout
                                        : ResourceBundleHelper.getMessageString("screenstate.noTimeout")));
                        displayInfo.append(ResourceBundleHelper.getMessageString("screenstate.tooltip.suffix"));
                        return displayInfo.toString();
                    }
                    return null;
                }
            });
        }
    }
    plot.setDataset(screenData);
    //      return plot;
}

From source file:com.att.aro.ui.view.diagnostictab.plot.WakeLockPlot.java

@Override
public void populate(XYPlot plot, AROTraceData analysis) {
    XYIntervalSeriesCollection wakelockData = new XYIntervalSeriesCollection();
    if (analysis == null) {
        logger.info("analysis data is null");
    } else {/*  w  ww  .  ja  v a2 s .c  o  m*/
        TraceResultType resultType = analysis.getAnalyzerResult().getTraceresult().getTraceResultType();
        if (resultType.equals(TraceResultType.TRACE_FILE)) {
            logger.info("didn't get analysis trace data!");

        } else {
            TraceDirectoryResult traceresult = (TraceDirectoryResult) analysis.getAnalyzerResult()
                    .getTraceresult();

            XYIntervalSeries series = new XYIntervalSeries(WakelockState.WAKELOCK_ACQUIRED);
            wakelockData.addSeries(series);

            // Populate the data set
            Iterator<WakelockInfo> iter = traceresult.getWakelockInfos().iterator();
            if (iter.hasNext()) {
                WakelockInfo lastEvent = iter.next();
                logger.debug("Wakelock Plotting");
                // Check whether WAKELOCK was acquired before logging begins.
                if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_RELEASED) {
                    series.add(0, 0, lastEvent.getBeginTimeStamp(), 0.5, 0, 1);
                    dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
                }
                while (iter.hasNext()) {
                    WakelockInfo currEvent = iter.next();
                    if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_ACQUIRED) {
                        logger.debug("Wakelock acquired curr " + currEvent.getBeginTimeStamp());
                        logger.debug("Wakelock acquired last " + lastEvent.getBeginTimeStamp());
                        series.add(lastEvent.getBeginTimeStamp(), lastEvent.getBeginTimeStamp(),
                                currEvent.getBeginTimeStamp(), 0.5, 0, 1);
                        dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
                    }
                    lastEvent = currEvent;
                }
                if (lastEvent.getWakelockState() == WakelockState.WAKELOCK_ACQUIRED) {
                    series.add(lastEvent.getBeginTimeStamp(), lastEvent.getBeginTimeStamp(),
                            traceresult.getTraceDuration(), 0.5, 0, 1);
                    dataMap.put(lastEvent.getBeginTimeStamp(), lastEvent);
                }
            }

            // Assign ToolTip to renderer
            XYItemRenderer renderer = plot.getRenderer();
            renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {

                @Override
                public String generateToolTip(XYDataset dataset, int series, int item) {

                    WakelockInfo wi = dataMap.get(dataset.getXValue(series, item));
                    if (wi != null) {

                        StringBuffer displayInfo = new StringBuffer(
                                ResourceBundleHelper.getMessageString("wakelock.tooltip.prefix"));
                        displayInfo.append(MessageFormat.format(
                                ResourceBundleHelper.getMessageString("wakelock.tooltip.content"),
                                ResourceBundleHelper.getEnumString(wi.getWakelockState()),
                                wi.getBeginTimeStamp()));
                        displayInfo.append(ResourceBundleHelper.getMessageString("wakelock.tooltip.suffix"));
                        return displayInfo.toString();
                    }
                    return null;
                }
            });

        }
    }

    plot.setDataset(wakelockData);
    //      return plot;
}

From source file:org.esa.snap.rcp.statistics.ProfilePlotPanel.java

private void updateDataSet() {
    if (!isInitialized) {
        return;/*from  w w w  . ja v a  2s .  c om*/
    }

    dataset.removeAllSeries();

    double dx = 0.5 * dataSourceConfig.boxSize;

    if (profileData != null) {
        final float[] sampleValues = profileData.getSampleValues();
        final float[] sampleSigmas = profileData.getSampleSigmas();
        XYIntervalSeries series = new XYIntervalSeries(
                getRaster() != null ? getRaster().getName() : DEFAULT_SAMPLE_DATASET_NAME);
        for (int x = 0; x < sampleValues.length; x++) {
            final float y = sampleValues[x];
            final float dy = sampleSigmas[x];
            series.add(x, x - dx, x + dx, y, y - dy, y + dy);
        }
        dataset.addSeries(series);

        if (dataSourceConfig.useCorrelativeData && dataSourceConfig.pointDataSource != null
                && dataSourceConfig.dataField != null) {

            XYIntervalSeries corrSeries = new XYIntervalSeries(StatisticChartStyling
                    .getCorrelativeDataLabel(dataSourceConfig.pointDataSource, dataSourceConfig.dataField));
            int[] shapeVertexIndexes = profileData.getShapeVertexIndexes();
            SimpleFeature[] simpleFeatures = dataSourceConfig.pointDataSource.getFeatureCollection()
                    .toArray(new SimpleFeature[0]);

            if (shapeVertexIndexes.length == simpleFeatures.length) {
                int fieldIndex = getAttributeIndex(dataSourceConfig.pointDataSource,
                        dataSourceConfig.dataField);
                if (fieldIndex != -1) {
                    for (int i = 0; i < simpleFeatures.length; i++) {
                        Number attribute = (Number) simpleFeatures[i].getAttribute(fieldIndex);
                        if (attribute != null) {
                            final double x = shapeVertexIndexes[i];
                            final double y = attribute.doubleValue();
                            corrSeries.add(x, x, x, y, y, y);
                        }
                    }
                    dataset.addSeries(corrSeries);
                }
            } else {
                System.out.println("Weird things happened:");
                System.out.println("  shapeVertexIndexes.length = " + shapeVertexIndexes.length);
                System.out.println("  simpleFeatures.length     = " + simpleFeatures.length);
            }

        }

        profilePlotDisplay.restoreAutoBounds();
        xAxisRangeControl.getBindingContext().setComponentsEnabled(PROPERTY_NAME_MARK_SEGMENTS,
                profileData.getShapeVertices().length > 2);
    }
}

From source file:org.esa.beam.visat.toolviews.stat.ProfilePlotPanel.java

private void updateDataSet() {
    if (!isInitialized) {
        return;//from  w  w w  .ja  v a  2s .c om
    }

    dataset.removeAllSeries();

    double dx = 0.5 * dataSourceConfig.boxSize;

    if (profileData != null) {
        final float[] sampleValues = profileData.getSampleValues();
        final float[] sampleSigmas = profileData.getSampleSigmas();
        XYIntervalSeries series = new XYIntervalSeries(
                getRaster() != null ? getRaster().getName() : DEFAULT_SAMPLE_DATASET_NAME);
        for (int x = 0; x < sampleValues.length; x++) {
            final float y = sampleValues[x];
            final float dy = sampleSigmas[x];
            series.add(x, x - dx, x + dx, y, y - dy, y + dy);
        }
        dataset.addSeries(series);

        if (dataSourceConfig.useCorrelativeData && dataSourceConfig.pointDataSource != null
                && dataSourceConfig.dataField != null) {

            XYIntervalSeries corrSeries = new XYIntervalSeries(
                    getCorrelativeDataLabel(dataSourceConfig.pointDataSource, dataSourceConfig.dataField));
            int[] shapeVertexIndexes = profileData.getShapeVertexIndexes();
            SimpleFeature[] simpleFeatures = dataSourceConfig.pointDataSource.getFeatureCollection()
                    .toArray(new SimpleFeature[0]);

            if (shapeVertexIndexes.length == simpleFeatures.length) {
                int fieldIndex = getAttributeIndex(dataSourceConfig.pointDataSource,
                        dataSourceConfig.dataField);
                if (fieldIndex != -1) {
                    for (int i = 0; i < simpleFeatures.length; i++) {
                        Number attribute = (Number) simpleFeatures[i].getAttribute(fieldIndex);
                        if (attribute != null) {
                            final double x = shapeVertexIndexes[i];
                            final double y = attribute.doubleValue();
                            corrSeries.add(x, x, x, y, y, y);
                        }
                    }
                    dataset.addSeries(corrSeries);
                }
            } else {
                System.out.println("Weird things happened:");
                System.out.println("  shapeVertexIndexes.length = " + shapeVertexIndexes.length);
                System.out.println("  simpleFeatures.length     = " + simpleFeatures.length);
            }

        }

        profilePlotDisplay.restoreAutoBounds();
        xAxisRangeControl.getBindingContext().setComponentsEnabled(PROPERTY_NAME_MARK_SEGMENTS,
                profileData.getShapeVertices().length > 2);
    }
}

From source file:org.jfree.data.xy.XYIntervalSeriesTest.java

/**
 * Confirm that the equals method can distinguish all the required fields.
 *///from w  w  w.j  a v a2 s . co m
@Test
public void testEquals() {
    XYIntervalSeries s1 = new XYIntervalSeries("s1");
    XYIntervalSeries s2 = new XYIntervalSeries("s1");
    assertTrue(s1.equals(s2));

    // seriesKey
    s1 = new XYIntervalSeries("s2");
    assertFalse(s1.equals(s2));
    s2 = new XYIntervalSeries("s2");
    assertTrue(s1.equals(s2));

    // autoSort
    s1 = new XYIntervalSeries("s2", false, true);
    assertFalse(s1.equals(s2));
    s2 = new XYIntervalSeries("s2", false, true);
    assertTrue(s1.equals(s2));

    // allowDuplicateValues
    s1 = new XYIntervalSeries("s2", false, false);
    assertFalse(s1.equals(s2));
    s2 = new XYIntervalSeries("s2", false, false);
    assertTrue(s1.equals(s2));

    // add a value
    s1.add(1.0, 0.5, 1.5, 2.0, 1.9, 2.1);
    assertFalse(s1.equals(s2));
    s2.add(1.0, 0.5, 1.5, 2.0, 1.9, 2.1);
    assertTrue(s2.equals(s1));

    // add another value
    s1.add(2.0, 0.5, 1.5, 2.0, 1.9, 2.1);
    assertFalse(s1.equals(s2));
    s2.add(2.0, 0.5, 1.5, 2.0, 1.9, 2.1);
    assertTrue(s2.equals(s1));

    // remove a value
    s1.remove(new Double(1.0));
    assertFalse(s1.equals(s2));
    s2.remove(new Double(1.0));
    assertTrue(s2.equals(s1));
}