Jfreechart:如何获取BoxAndWhiskerChart中的各个项目

时间:2013-09-29 10:35:39

标签: java jfreechart

我正在生成一个盒子和胡须图表,每个类别有一个项目。我还想生成一个报告,其中包含BoxPlot中每个项目的均值,中位数和所有值。因此,在我基于categoryType创建数据集defaultboxandwhiskercategorydataset之后,我调用方法convertReportData来获取defaultbox和whiskercategorydataset中的每个项目,并将平均值,中位数等保存到另一个数据对象中,以便生成报告。但它只打印一个类别。有人可以帮我弄清楚出了什么问题吗?

我的箱子图 enter image description here

代码:

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);
            }

        }

1 个答案:

答案 0 :(得分:1)

问题在于

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

您使用的是getColumnKeys而您只有一列。应该是,

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