@Override
    public void writeGraphFiles(BenchmarkReport benchmarkReport) {
        List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList
                = new ArrayList<>(BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
        List<PickedMoveTypeStepScoreDiffStatisticPoint> points = getPointList();
        for (PickedMoveTypeStepScoreDiffStatisticPoint point : points) {
            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<>());
                }
                Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
                XYIntervalSeries series = moveTypeToSeriesMap.computeIfAbsent(moveType,
                        k -> new XYIntervalSeries(moveType));
                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<>(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);
            String scoreLevelLabel = subSingleBenchmarkResult.getSingleBenchmarkResult().getProblemBenchmarkResult()
                    .findScoreLevelLabel(scoreLevelIndex);
            JFreeChart chart = new JFreeChart(subSingleBenchmarkResult.getName()
                    + " picked move type step " + scoreLevelLabel + " diff statistic",
                    JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            graphFileList.add(writeChartToImageFile(chart,
                    "PickedMoveTypeStepScoreDiffStatisticLevel" + scoreLevelIndex));
        }
    }
@Override
    public void writeGraphFiles(BenchmarkReport benchmarkReport) {
        List<Map<String, XYIntervalSeries>> moveTypeToSeriesMapList
                = new ArrayList<>(BenchmarkReport.CHARTED_SCORE_LEVEL_SIZE);
        List<PickedMoveTypeStepScoreDiffStatisticPoint> points = getPointList();
        for (PickedMoveTypeStepScoreDiffStatisticPoint point : points) {
            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<>());
                }
                Map<String, XYIntervalSeries> moveTypeToSeriesMap = moveTypeToSeriesMapList.get(i);
                XYIntervalSeries series = moveTypeToSeriesMap.computeIfAbsent(moveType,
                        k -> new XYIntervalSeries(moveType));
                double yValue = levelValues[i];
                
                series.add(timeMillisSpent, timeMillisSpent, timeMillisSpent,
                        yValue, (yValue > 0.0) ? 0.0 : yValue, (yValue > 0.0) ? yValue : 0.0);
            }
        }
        graphFileList = new ArrayList<>(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);
            String scoreLevelLabel = subSingleBenchmarkResult.getSingleBenchmarkResult().getProblemBenchmarkResult()
                    .findScoreLevelLabel(scoreLevelIndex);
            JFreeChart chart = new JFreeChart(subSingleBenchmarkResult.getName()
                    + " picked move type step " + scoreLevelLabel + " diff statistic",
                    JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            graphFileList.add(writeChartToImageFile(chart,
                    "PickedMoveTypeStepScoreDiffStatisticLevel" + scoreLevelIndex));
        }
    }
@ Override public void writeGraphFiles ( BenchmarkReport benchmarkReport ) { List < Map < String , XYIntervalSeries > > moveTypeToSeriesMapList = new ArrayList <> ( BenchmarkReport . CHARTED_SCORE_LEVEL_SIZE ) ; List < PickedMoveTypeStepScoreDiffStatisticPoint > points = getPointList ( ) ; for ( PickedMoveTypeStepScoreDiffStatisticPoint point : points ) { 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 <> ( ) ) ; } Map < String , XYIntervalSeries > moveTypeToSeriesMap = moveTypeToSeriesMapList . get ( i ) ; XYIntervalSeries series = moveTypeToSeriesMap . computeIfAbsent ( moveType , k -> new XYIntervalSeries ( moveType ) ) ; 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 <> ( 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 ) ; String scoreLevelLabel = subSingleBenchmarkResult . getSingleBenchmarkResult ( ) . getProblemBenchmarkResult ( ) . findScoreLevelLabel ( scoreLevelIndex ) ; JFreeChart chart = new JFreeChart ( subSingleBenchmarkResult . getName ( ) + " picked move type step " + scoreLevelLabel + " diff statistic" , JFreeChart . DEFAULT_TITLE_FONT , plot , true ) ; graphFileList . add ( writeChartToImageFile ( chart , "PickedMoveTypeStepScoreDiffStatisticLevel" + scoreLevelIndex ) ) ; } }
************************************************************************
************************************************************************