java_new
java_new

Reputation: 83

Jfreechart: how to get the individual items in a BoxAndWhiskerChart

I am generating a box and whisker chart with one item per category.I also want to generate a report with the mean, median and all the values per item in the BoxPlot. So, after i create the dataset, defaultboxandwhiskercategorydataset based on the categoryType, I call the method convertReportData to fetch each item in the defaultboxandwhiskercategorydataset and save the mean, median etc into another data object later for report generation. But it just prints only one category. Could anyone please help me to figure out what is wrong?

My boxplot enter image description here

Code:

public static BoxAndWhiskerCategoryDataset createDataset() {
        startTime = inputData.getItimeFrom();
        endTime = inputData.getItimeTo();
        List<String> categorylist = new ArrayList<>();
        categorylist.add("Distance 0-20");
        categorylist.add("Distance 20-40");
        categorylist.add("Distance 40-60");
        categorylist.add("Distance 60-80");
        categorylist.add("Distance 80-100");
        categorylist.add("Distance >100");
        Map<String, List<Double>> map = new HashMap<String, List<Double>>();
        map = addDistance(values_list);
            DefaultBoxAndWhiskerCategoryDataset defaultboxandwhiskercategorydataset = new DefaultBoxAndWhiskerCategoryDataset();
            for (String categoryType : categorylist) {
                map.remove(null);
                for (Map.Entry<String, List<Double>> entry : map.entrySet()) {
                    if (entry.getKey().equalsIgnoreCase(categoryType)) {
                        defaultboxandwhiskercategorydataset.add(entry.getValue(),
                                categoryType, " ");
                    }
                }

            }
            convertReportData(defaultboxandwhiskercategorydataset, categorylist);
            return defaultboxandwhiskercategorydataset;
        }
        private static void convertReportData(DefaultBoxAndWhiskerCategoryDataset boxandwhiskercategorydataset, List<String> latencyTypelist) {
            report = new HashMap<>();
            for (int i = 0; i < boxandwhiskercategorydataset.getColumnKeys().size(); i++) {
                BoxAndWhiskerItem item = boxandwhiskercategorydataset.getItem(i, 0);
                ReportData data = new ReportData();
                data.setMean(item.getMean());
                data.setMedian(item.getMedian());
                data.setQ1(item.getQ1());
                data.setQ3(item.getQ3());
                data.setMaxOutlier(item.getMaxOutlier());
                data.setMaxRegularNumber(item.getMaxRegularValue());
                data.setMinOutlier(item.getMinOutlier());
                data.setMinRegularNumber(item.getMinRegularValue());
                data.setOutliers(item.getOutliers());
                report.put(boxandwhiskercategorydataset.getRowKey(i).toString(),
                        data);
            }

        }

Upvotes: 0

Views: 311

Answers (1)

java_learner
java_learner

Reputation: 182

The problem is with

 for (int i = 0; i < boxandwhiskercategorydataset.getColumnKeys().size(); i++) {

you are using getColumnKeys whereas you have only one Column. It should have been,

 for (int i = 0; i < boxandwhiskercategorydataset.getRowKeys().size(); i++) {

Upvotes: 1

Related Questions