Example usage for org.jfree.data.statistics DefaultBoxAndWhiskerCategoryDataset add

List of usage examples for org.jfree.data.statistics DefaultBoxAndWhiskerCategoryDataset add

Introduction

In this page you can find the example usage for org.jfree.data.statistics DefaultBoxAndWhiskerCategoryDataset add.

Prototype

public void add(BoxAndWhiskerItem item, Comparable rowKey, Comparable columnKey) 

Source Link

Document

Adds a list of values relating to one Box and Whisker entity to the table.

Usage

From source file:org.talend.dataprofiler.chart.TOPChartService.java

@Override
public Object createDefaultBoxAndWhiskerCategoryDataset(Double mean, Double median, Double q1, Double q3,
        Double minRegularValue, Double maxRegularValue) {
    DefaultBoxAndWhiskerCategoryDataset dataset = ChartDatasetUtils.createBoxAndWhiskerDataset();
    BoxAndWhiskerItem item = ChartDatasetUtils.createBoxAndWhiskerItem(mean, median, q1, q3, minRegularValue,
            maxRegularValue, null);//from  w w  w . j a va  2 s.  c om
    dataset.add(item, "0", ""); //$NON-NLS-1$ //$NON-NLS-2$

    @SuppressWarnings("rawtypes")
    List zerolist = new ArrayList();
    dataset.add(zerolist, "1", ""); //$NON-NLS-1$ //$NON-NLS-2$
    dataset.add(zerolist, "2", ""); //$NON-NLS-1$ //$NON-NLS-2$
    dataset.add(zerolist, "3", ""); //$NON-NLS-1$ //$NON-NLS-2$
    dataset.add(zerolist, "4", ""); //$NON-NLS-1$ //$NON-NLS-2$
    dataset.add(zerolist, "5", ""); //$NON-NLS-1$ //$NON-NLS-2$
    dataset.add(zerolist, "6", ""); //$NON-NLS-1$ //$NON-NLS-2$

    return dataset;
}

From source file:org.jax.pubarray.server.restful.GraphingResource.java

/**
 * Create a graph for the given configuration
 * @param graphConfiguration/*from  w  w  w .j av a 2 s. c  om*/
 *          the key
 * @return
 *          the graph
 */
@SuppressWarnings("unchecked")
private JFreeChart createProbeIntensityGraph(ProbeIntensityGraphConfiguration graphConfiguration) {
    try {
        Connection connection = this.getConnection();

        String[] probeIds = graphConfiguration.getProbeIds();
        double[][] probeDataRows = new double[probeIds.length][];
        for (int i = 0; i < probeIds.length; i++) {
            probeDataRows[i] = this.persistenceManager.getDataRowForProbeID(connection, probeIds[i]);
        }

        TableColumnMetadata orderBy = graphConfiguration.getOrderProbesBy();
        final List<Comparable> orderByItems;
        if (orderBy != null) {
            LOG.info("We are ordering by: " + orderBy);
            orderByItems = this.persistenceManager.getDesignDataColumn(connection, orderBy);
        } else {
            orderByItems = null;
        }

        TableMetadata metadata = this.persistenceManager.getDataTableMetadata(connection);
        final CategoryDataset categoryDataset;
        if (graphConfiguration.getGroupReplicates()) {
            switch (graphConfiguration.getGroupedGraphType()) {
            case BOX_PLOT: {
                categoryDataset = new DefaultBoxAndWhiskerCategoryDataset();
            }
                break;

            case SCATTER_PLOT: {
                categoryDataset = new DefaultMultiValueCategoryDataset();
            }
                break;

            default:
                throw new IllegalArgumentException(
                        "don't know how to deal with plot type: " + graphConfiguration.getGroupedGraphType());
            }
        } else {
            categoryDataset = new DefaultCategoryDataset();
        }

        // iterate through all of the selected probesets
        List<QualifiedColumnMetadata> termsOfInterest = Arrays.asList(graphConfiguration.getTermsOfInterest());
        for (int rowIndex = 0; rowIndex < probeDataRows.length; rowIndex++) {
            double[] currRow = probeDataRows[rowIndex];
            assert currRow.length == metadata.getColumnMetadata().length - 1;

            // should we log2 transform the data?
            if (graphConfiguration.getLog2TransformData()) {
                for (int i = 0; i < currRow.length; i++) {
                    currRow[i] = Math.log(currRow[i]) / LOG2_FACTOR;
                }
            }

            // iterate through the columns in the data table (each column
            // represents a different array)
            List<ComparableContainer<Double, Comparable>> rowElemList = new ArrayList<ComparableContainer<Double, Comparable>>();
            for (int colIndex = 0; colIndex < currRow.length; colIndex++) {
                // we use +1 indexing here because we want to skip over
                // the probesetId metadata and get right to the
                // array intensity metadata
                TableColumnMetadata colMeta = metadata.getColumnMetadata()[colIndex + 1];

                // check to see if we need to skip this data
                if (!graphConfiguration.getIncludeDataFromAllArrays()) {
                    // if it's one of the "terms of interest" we will keep
                    // it. we're using a brute force search here
                    boolean keepThisOne = false;
                    for (QualifiedColumnMetadata termOfInterest : termsOfInterest) {
                        if (termOfInterest.getTableName().equals(metadata.getTableName())
                                && termOfInterest.getName().equals(colMeta.getName())) {
                            keepThisOne = true;
                            break;
                        }
                    }

                    if (!keepThisOne) {
                        continue;
                    }
                }

                final String columnName = colMeta.getName();
                final Comparable columnKey;
                if (orderByItems == null) {
                    columnKey = columnName;
                } else {
                    // the ordering will be done on the selected
                    // "order by" design criteria
                    columnKey = new ComparableContainer<String, Comparable>(columnName,
                            orderByItems.get(colIndex), !graphConfiguration.getGroupReplicates());

                    // TODO remove me!!!!
                    System.out.println("For array " + columnName + " the order by " + "value is: "
                            + orderByItems.get(colIndex));
                    // end of remove me
                }

                rowElemList
                        .add(new ComparableContainer<Double, Comparable>(currRow[colIndex], columnKey, false));
            }

            Collections.sort(rowElemList);

            if (graphConfiguration.getGroupReplicates()) {
                switch (graphConfiguration.getGroupedGraphType()) {
                case BOX_PLOT: {
                    DefaultBoxAndWhiskerCategoryDataset dataset = (DefaultBoxAndWhiskerCategoryDataset) categoryDataset;
                    for (int i = 0; i < rowElemList.size(); i++) {
                        List<Double> groupList = new ArrayList<Double>();
                        groupList.add(rowElemList.get(i).getElement());
                        Comparable colKey = rowElemList.get(i).getComparable();

                        i++;
                        for (; i < rowElemList.size()
                                && rowElemList.get(i).getComparable().equals(colKey); i++) {
                            groupList.add(rowElemList.get(i).getElement());
                        }
                        i--;

                        dataset.add(groupList, probeIds[rowIndex], colKey);
                    }
                }
                    break;

                case SCATTER_PLOT: {
                    DefaultMultiValueCategoryDataset dataset = (DefaultMultiValueCategoryDataset) categoryDataset;
                    for (int i = 0; i < rowElemList.size(); i++) {
                        List<Double> groupList = new ArrayList<Double>();
                        groupList.add(rowElemList.get(i).getElement());
                        Comparable colKey = rowElemList.get(i).getComparable();

                        i++;
                        for (; i < rowElemList.size()
                                && rowElemList.get(i).getComparable().equals(colKey); i++) {
                            groupList.add(rowElemList.get(i).getElement());
                        }
                        i--;

                        dataset.add(groupList, probeIds[rowIndex], colKey);
                    }
                }
                    break;
                }
            } else {
                DefaultCategoryDataset dataset = (DefaultCategoryDataset) categoryDataset;
                for (ComparableContainer<Double, Comparable> rowElem : rowElemList) {
                    dataset.addValue(rowElem.getElement(), probeIds[rowIndex], rowElem.getComparable());
                }
            }
        }

        CategoryAxis xAxis = new CategoryAxis();
        if (graphConfiguration.getGroupReplicates() && orderBy != null) {
            xAxis.setLabel(orderBy.getName());
        } else {
            if (orderBy != null) {
                xAxis.setLabel("Arrays (Ordered By " + orderBy.getName() + ")");
            } else {
                xAxis.setLabel("Arrays");
            }
        }
        xAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);

        final NumberAxis yAxis;
        if (graphConfiguration.getLog2TransformData()) {
            yAxis = new NumberAxis("log2(Intensity)");
        } else {
            yAxis = new NumberAxis("Intensity");
        }
        yAxis.setAutoRange(true);
        yAxis.setAutoRangeIncludesZero(false);

        // TODO: this is a HACK to deal with auto-range bug in JFreeChart
        //       which occurs when doing the grouped scatter plot
        if (graphConfiguration.getGroupReplicates()
                && graphConfiguration.getGroupedGraphType() == GroupedGraphType.SCATTER_PLOT) {
            double minVal = Double.POSITIVE_INFINITY;
            double maxVal = Double.NEGATIVE_INFINITY;
            for (double[] dataRow : probeDataRows) {
                for (double datum : dataRow) {
                    if (datum > maxVal) {
                        maxVal = datum;
                    }

                    if (datum < minVal) {
                        minVal = datum;
                    }
                }

                if (minVal != Double.POSITIVE_INFINITY && maxVal != Double.NEGATIVE_INFINITY
                        && minVal != maxVal) {
                    yAxis.setAutoRange(false);

                    double margin = (maxVal - minVal) * 0.02;
                    Range yRange = new Range(minVal - margin, maxVal + margin);
                    yAxis.setRange(yRange);
                }
            }
        }
        // END HACK

        final CategoryItemRenderer renderer;
        if (graphConfiguration.getGroupReplicates()) {
            switch (graphConfiguration.getGroupedGraphType()) {
            case BOX_PLOT: {
                BoxAndWhiskerRenderer boxRenderer = new BoxAndWhiskerRenderer();
                boxRenderer.setMaximumBarWidth(0.03);
                renderer = boxRenderer;
            }
                break;

            case SCATTER_PLOT: {
                renderer = new ScatterRenderer();
            }
                break;

            default:
                throw new IllegalArgumentException(
                        "don't know how to deal with plot type: " + graphConfiguration.getGroupedGraphType());
            }
        } else {
            renderer = new LineAndShapeRenderer();
        }
        Plot plot = new CategoryPlot(categoryDataset, xAxis, yAxis, renderer);

        return new JFreeChart("Intensity Values", plot);
    } catch (SQLException ex) {
        LOG.log(Level.SEVERE, "failed to generate image", ex);
        return null;
    }
}

From source file:org.moeaframework.analysis.plot.Plot.java

/**
 * Displays the statistical results from an {@link AnalyzerResults} as a
 * box-and-whisker plot.//from w w  w.j a  v a 2 s .  c  om
 * 
 * @param result the {@code AnalyzerResults} instance
 * @return a reference to this {@code Plot} instance
 */
public Plot add(AnalyzerResults result) {
    createCategoryPlot();

    DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();

    for (String algorithm : result.getAlgorithms()) {
        for (String indicator : result.get(algorithm).getIndicators()) {
            List<Double> values = new ArrayList<Double>();

            for (double value : result.get(algorithm).get(indicator).getValues()) {
                values.add(value);
            }

            dataset.add(values, algorithm, indicator);
        }
    }

    CategoryPlot plot = chart.getCategoryPlot();
    plot.setDataset(dataset);

    return this;
}

From source file:msi.gama.outputs.layers.ChartLayerStatement.java

/**
 * create dataset for box_whisker chart/*from   ww  w .  jav  a2  s. co m*/
 * @return A sample dataset.
 */
private BoxAndWhiskerCategoryDataset createWhisker(final IScope scope) {

    final CategoryPlot plot = (CategoryPlot) chart.getPlot();
    // final int seriesCount = 1;
    final int categoryCount = 3;
    final int entityCount = 2;

    final DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();
    for (int i = 0; i < datas.size(); i++) {
        // ChartData e = datas.get(i);
        for (int j = 0; j < categoryCount; j++) {
            final List list = new ArrayList();
            // add some values...
            for (int k = 0; k < entityCount; k++) {
                // list.add(new Double(k*2));
                // list.add(new Double(k*3));
                final double value1 = 10.0 + Math.random() * 3;
                list.add(new Double(value1));
                final double value2 = 11.25 + Math.random(); // concentrate values in the middle
                list.add(new Double(value2));
            }
            dataset.add(list, "Series " + i, " Type " + j);

            history.append("Series " + i);
            history.append(',');
        }
    }
    history.deleteCharAt(history.length() - 1);
    history.append(Strings.LN);
    plot.setDataset(dataset);
    chart.removeLegend();
    final CategoryAxis axis = plot.getDomainAxis();
    axis.setTickLabelFont(getTickFont());
    axis.setLabelFont(getLabelFont());
    // ((BarRenderer3D) plot.getRenderer()).setItemMargin(0.1);
    axis.setCategoryMargin(0.1);
    axis.setUpperMargin(0.05);
    axis.setLowerMargin(0.05);
    return dataset;
}

From source file:org.sakaiproject.sitestats.impl.ServerWideReportManagerImpl.java

private BoxAndWhiskerCategoryDataset getHourlyUsageDataSet() {
    // log.info("Generating activityWeekBarDataSet");
    List<ServerWideStatsRecord> hourlyUsagePattern = getHourlyUsagePattern();
    if (hourlyUsagePattern == null) {
        return null;
    }// w w w  . ja  v a  2  s . co  m

    DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();

    List[] hourList = new ArrayList[24];
    for (int ii = 0; ii < 24; ii++) {
        hourList[ii] = new ArrayList();
    }

    int totalDays = 0;
    Date prevDate = null;
    for (ServerWideStatsRecord regularUsers : hourlyUsagePattern) {
        Date currDate = (Date) regularUsers.get(0);
        if (!currDate.equals(prevDate)) {
            prevDate = currDate;
            totalDays++;
        }
        hourList[(Integer) regularUsers.get(1)].add((Long) regularUsers.get(2));
    }

    for (int ii = 0; ii < 24; ii++) {
        // add zero counts, when no data for the day
        for (int jj = hourList[ii].size(); jj < totalDays; jj++) {
            hourList[ii].add(Long.valueOf(0));
        }

        dataset.add(hourList[ii], "Last 30 days", "" + ii);
    }

    return dataset;
}

From source file:com.diversityarrays.kdxplore.boxplot.BoxPlotPanel.java

private BoxAndWhiskerCategoryDataset createSampleDataSet(Bag<String> missingOrBad, Bag<String> suppressed,
        Double[] minMax) {/* w  w w .  j  a  v  a  2  s.  c o m*/
    final DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();
    seriesCountByTraitName.clear();

    minMax[0] = null;
    minMax[1] = null;
    int count = 0;
    for (TraitInstance instance : traitInstances) {

        TraitInstanceValueRetriever<?> y_tivr = tivrByTi.get(instance);
        String instanceName = traitNameStyle.makeTraitInstanceName(instance);

        List<Double> data = new ArrayList<Double>();

        for (PlotOrSpecimen pos : plotSpecimens) {
            Plot plot = plotInfoProvider.getPlotByPlotId(pos.getPlotId());
            if (plot == null || !plot.isActivated()) {
                continue;
            }

            TraitValue yTraitValue = y_tivr.getAttributeValue(plotInfoProvider, plot, null);
            if (yTraitValue == null || !(yTraitValue.comparable instanceof Number)) {
                missingOrBad.add(instanceName);
                continue;
            } else if (yTraitValue.suppressed) {
                // TODO count suppressed
                suppressed.add(instanceName);
                continue;
            }
            double y = ((Number) yTraitValue.comparable).doubleValue();
            data.add(y);

            if (minMax[0] == null) {
                minMax[0] = y;
                minMax[1] = y;
            } else {
                minMax[0] = Math.min(minMax[0], y);
                minMax[1] = Math.max(minMax[1], y);
            }
        }

        seriesCountByTraitName.put(instanceName, count);

        String columnKey = ""; // TODO use something better? //$NON-NLS-1$
        dataset.add(data, instanceName, columnKey);
        count++;
    }

    return dataset;
}

From source file:it.eng.spagobi.engines.chart.bo.charttypes.boxcharts.BoxCharts.java

/**
 * Inherited by IChart: calculates chart value.
 * /*from   w  w  w  .j a v  a  2s . c om*/
 * @return the dataset
 * 
 * @throws Exception the exception
 */

public DatasetMap calculateValue() throws Exception {
    logger.debug("IN");
    String res = DataSetAccessFunctions.getDataSetResultFromId(profile, getData(), parametersObject);
    categories = new HashMap();

    DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();

    SourceBean sbRows = SourceBean.fromXMLString(res);
    List listAtts = sbRows.getAttributeAsList("ROW");

    // run all categories (one for each row)
    categoriesNumber = 0;

    boolean first = true;
    boolean first2 = true;

    double temp;

    for (Iterator iterator = listAtts.iterator(); iterator.hasNext();) {
        SourceBean category = (SourceBean) iterator.next();
        List atts = category.getContainedAttributes();

        // atts are all the serie, run through them and sets what you need
        List values = new ArrayList();
        String nameP = "";
        String value = "";
        String catValue = "";

        if (first2) {
            if (name.indexOf("$F{") >= 0) {
                setTitleParameter(atts);
            }
            if (getSubName() != null && getSubName().indexOf("$F") >= 0) {
                setSubTitleParameter(atts);
            }
            first2 = false;
        }

        for (Iterator iterator2 = atts.iterator(); iterator2.hasNext();) {
            SourceBeanAttribute object = (SourceBeanAttribute) iterator2.next();

            nameP = new String(object.getKey());
            value = new String((String) object.getValue());

            if (nameP.equalsIgnoreCase("x")) {
                catValue = value;
                categoriesNumber = categoriesNumber + 1;
                categories.put(new Integer(categoriesNumber), value);
            } else {
                Double valore = Double.valueOf(value);

                // set minimum e maximus to avoid auto range of axis
                if (first) {
                    min = valore.doubleValue();
                    max = valore.doubleValue();
                    first = false;
                }

                if (min > valore.doubleValue())
                    min = valore.doubleValue();
                if (max < valore.doubleValue())
                    max = valore.doubleValue();

                values.add(valore);

            }
        }
        dataset.add(values, "serie", catValue);
    }

    logger.debug("OUT");
    DatasetMap datasets = new DatasetMap();
    datasets.addDataset("1", dataset);
    return datasets;
}

From source file:edu.ucla.stat.SOCR.chart.ChartGenerator_JTable.java

private BoxAndWhiskerCategoryDataset createBoxAndWhiskerCategoryDataset() {
    String[][] x = new String[xyLength][no_category];
    String[][] y = new String[xyLength][1];

    for (int index = 0; index < no_category; index++)
        for (int i = 0; i < xyLength; i++)
            x[i][index] = indepValues[i][index];

    for (int index = 0; index < 1; index++)
        for (int i = 0; i < xyLength; i++)
            y[i][index] = depValues[i][index];

    // create the dataset...
    DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();
    int SERIES_COUNT = xyLength;
    int CATEGORY_COUNT = no_category;
    String[][] values_storage = new String[SERIES_COUNT][CATEGORY_COUNT];

    for (int s = 0; s < SERIES_COUNT; s++)
        for (int c = 0; c < CATEGORY_COUNT; c++) {
            dataset.add(createList(x[s][c]), y[s][0], independentHeaders[c]);
            values_storage[s][c] = x[s][c];
        }// ww  w.  j  av  a  2 s  .  c o m

    return dataset;
}

From source file:edu.msu.cme.rdp.classifier.train.validation.distance.TaxaSimilarityMain.java

public void createPlot(String plotTitle, File outdir) throws IOException {
    XYSeriesCollection dataset = new XYSeriesCollection();
    DefaultBoxAndWhiskerCategoryDataset scatterDataset = new DefaultBoxAndWhiskerCategoryDataset();

    PrintStream boxchart_dataStream = new PrintStream(new File(outdir, plotTitle + ".boxchart.txt"));

    boxchart_dataStream.println(/*from w  ww . j av  a  2 s.c  om*/
            "#\tkmer" + "\trank" + "\t" + "max" + "\t" + "avg" + "\t" + "min" + "\t" + "Q1" + "\t" + "median"
                    + "\t" + "Q3" + "\t" + "98Pct" + "\t" + "2Pct" + "\t" + "comparisons" + "\t" + "sum");
    for (int i = 0; i < ranks.size(); i++) {
        long[] countArray = sabCoutMap.get(ranks.get(i));
        if (countArray == null)
            continue;

        double sum = 0.0;
        int max = 0;
        int min = 100;
        double mean = 0;
        int Q1 = -1;
        int median = -1;
        int Q3 = -1;
        int pct_98 = -1;
        int pct_2 = -1;
        long comparisons = 0;
        int minOutlier = 0; // we don't care about the outliers
        int maxOutlier = 0; //

        XYSeries series = new XYSeries(ranks.get(i));

        for (int c = 0; c < countArray.length; c++) {
            if (countArray[c] == 0)
                continue;
            comparisons += countArray[c];
            sum += countArray[c] * c;
            if (c < min) {
                min = c;
            }
            if (c > max) {
                max = c;
            }
        }

        // create series
        double cum = 0;
        for (int c = 0; c < countArray.length; c++) {
            if (countArray[c] == 0)
                continue;
            cum += countArray[c];
            int pct = (int) Math.floor(100 * cum / comparisons);
            series.add(c, pct);

            if (pct_2 == -1 && pct >= 5) {
                pct_2 = c;
            }
            if (Q3 == -1 && pct >= 25) {
                Q3 = c;
            }
            if (median == -1 && pct >= 50) {
                median = c;
            }
            if (Q1 == -1 && pct >= 75) {
                Q1 = c;
            }
            if (pct_98 == -1 && pct >= 98) {
                pct_98 = c;
            }
        }
        if (!series.isEmpty()) {
            dataset.addSeries(series);

            BoxAndWhiskerItem item = new BoxAndWhiskerItem(sum / comparisons, median, Q1, Q3, pct_2, pct_98,
                    minOutlier, maxOutlier, new ArrayList());
            scatterDataset.add(item, ranks.get(i), "");

            boxchart_dataStream.println("#\t" + GoodWordIterator.getWordsize() + "\t" + ranks.get(i) + "\t"
                    + max + "\t" + format.format(sum / comparisons) + "\t" + min + "\t" + Q1 + "\t" + median
                    + "\t" + Q3 + "\t" + pct_98 + "\t" + pct_2 + "\t" + comparisons + "\t" + sum);
        }
    }
    boxchart_dataStream.close();
    Font lableFont = new Font("Helvetica", Font.BOLD, 28);

    JFreeChart chart = ChartFactory.createXYLineChart(plotTitle, "Similarity%", "Percent Comparisions", dataset,
            PlotOrientation.VERTICAL, true, true, false);
    ((XYPlot) chart.getPlot()).getRenderer().setStroke(new BasicStroke(2.0f));
    chart.getLegend().setItemFont(new Font("Helvetica", Font.BOLD, 24));
    chart.getTitle().setFont(lableFont);
    ((XYPlot) chart.getPlot()).getDomainAxis().setLabelFont(lableFont);
    ((XYPlot) chart.getPlot()).getDomainAxis().setTickLabelFont(lableFont);
    ValueAxis rangeAxis = ((XYPlot) chart.getPlot()).getRangeAxis();
    rangeAxis.setRange(0, 100);
    rangeAxis.setTickLabelFont(lableFont);
    rangeAxis.setLabelFont(lableFont);
    ((NumberAxis) rangeAxis).setTickUnit(new NumberTickUnit(5));
    ChartUtilities.writeScaledChartAsPNG(new PrintStream(new File(outdir, plotTitle + ".linechart.png")), chart,
            800, 1000, 3, 3);

    BoxPlotUtils.createBoxplot(scatterDataset, new PrintStream(new File(outdir, plotTitle + ".boxchart.png")),
            plotTitle, "Rank", "Similarity%", lableFont);

}

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

/**
 * Creates a sample dataset.//w  w w .  j  a  v  a 2  s  .  c  om
 *
 * @return A sample dataset.
 */
private BoxAndWhiskerCategoryDataset createSampleDataset(ArrayList<Double> Pf) {

    final int seriesCount = 5;
    final int categoryCount = 4;
    final int entityCount = 22;
    //String sDirectorio = "experiments\\2015-10-30-mazeoff";
    File f = new File(experimentsDir);
    String extension;
    File[] files = f.listFiles();
    Hashtable<String, String> Pop = new Hashtable<>();
    PrintWriter escribir;
    Scanner sc = null;
    ArrayList<Integer> aPops = new ArrayList<>();
    ArrayList<Double> aPf = new ArrayList<>();
    ArrayList<String> aTech = new ArrayList<>();

    Hashtable<String, List> info = new Hashtable();

    //String[] aMode = {"levywalk", "lwphevap", "hybrid", "hybrid3", "hybrid4"};
    for (String mode : aMode) {
        info.put(mode, new ArrayList());
    }

    final DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();

    for (File file : files) {
        extension = "";
        int i = file.getName().lastIndexOf('.');
        int p = Math.max(file.getName().lastIndexOf('/'), file.getName().lastIndexOf('\\'));
        if (i > p) {
            extension = file.getName().substring(i + 1);
        }

        // System.out.println(file.getName() + "extension" + extension);
        if (file.isFile() && extension.equals("csv") && file.getName().startsWith("dataCollected")) {
            System.out.println(file.getName());
            System.out.println("get: " + file.getName());
            String[] filenamep = file.getName().split(Pattern.quote("+"));

            System.out.println("file" + filenamep[8]);

            int popsize = Integer.valueOf(filenamep[3]);
            double pf = Double.valueOf(filenamep[5]);
            String mode = filenamep[7];

            int maxIter = -1;
            //if (!filenamep[8].isEmpty()) {
            maxIter = Integer.valueOf(filenamep[9]);
            //}

            System.out.println("psize:" + popsize);
            System.out.println("pf:" + pf);
            System.out.println("mode:" + mode);
            System.out.println("maxIter:" + maxIter);

            //String[] aMode = {"random", "levywalk", "sandc", "sandclw"};
            //String[] aMode = {"levywalk", "lwphevap", "hybrid", "hybrid3", "hybrid4", "sequential"};
            //String[] aMode = {"levywalk", "lwphevap", "hybrid", "sequential"};

            if (/*Pf == pf && */isInMode(aMode, mode)) {
                final List list = new ArrayList();
                try {
                    sc = new Scanner(file);

                } catch (FileNotFoundException ex) {
                    Logger.getLogger(DataCollectedLatexConsolidatorSASOMessagesSend1.class.getName())
                            .log(Level.SEVERE, null, ex);
                }
                int roundNumber = 0;
                double globalInfoCollected = 0;

                String[] data = null;
                while (sc.hasNext()) {
                    String line = sc.nextLine();
                    data = line.split(",");
                    //System.out.println("data");
                    roundNumber = Integer.valueOf(data[0]);
                    globalInfoCollected = Double.valueOf(data[4]);

                    if (globalInfoCollected >= 90 && Pf.contains(pf)) {
                        info.get(mode).add(roundNumber);
                        break;
                    }

                }

                LOGGER.debug("Adding series " + i);
                LOGGER.debug(list.toString());
                if (Pf.contains(pf)) {
                    /*pf == 1.0E-4 || pf == 3.0E-4*/
                    if (Pf.size() == 1) {
                        dataset.add(list, popsize, getTechniqueName(mode));
                    } else {
                        dataset.add(list, String.valueOf(popsize) + "-" + pf, getTechniqueName(mode));
                    }
                }
            }
        }

    }

    for (String key : info.keySet()) {
        System.out.println(key + ":" + info.get(key).size() / 30 * 100.0);
        dataset.add(info.get(key), 10, getTechniqueName(key));
    }

    return dataset;
}