在XYSeries中将重复X值的Y值一起添加

时间:2013-04-15 19:57:57

标签: java 2d jfreechart

public XYSeriesCollection CreateDataset(int startColumn, int endColumn, int startRow, int endRow) {


    XYSeriesCollection dataset = new XYSeriesCollection();
    XYSeries series = new XYSeries("Test");

    for (int j = startRow; j < endRow; j++) {
            String curVal = m_Data[j][endColumn];
            if (isInt(curVal)) {
                XYDataItem item = series.addOrUpdate(Integer.parseInt(m_Data[j][startColumn]), Integer.parseInt(curVal));
                if (item != null) {
                    int temp = item.getY().intValue() + Integer.parseInt(curVal);
                    int temp1 = series.indexOf(Integer.parseInt(m_Data[j][startColumn]));
                    /*Integer temp2 = new Integer(Integer.parseInt(m_Data[j][startColumn]));
                    series.update((Number) temp2, temp);*/
                    series.updateByIndex(temp1, temp);
                }
            } /*else if (isDouble(curVal)) {
                series.add(Integer.parseInt(m_Data[j][startColumn]), Double.parseDouble(curVal));
            } else {
                series.add(Integer.parseInt(m_Data[j][startColumn]), 0);
            }*/


    }
        dataset.addSeries(series);

    return dataset;

}

包含在m_Data中的CSV文件已格式化为String [Rows] [Columns]。我要做的是创建一个用于XYBarchart的数据集,其中startColumn指示哪个列,而for循环用于遍历该列的行以获取X轴的值(键?)。 Y的值从同一行的endColumn中检索。

然而,在m_Data数组中是重复值,因此当使用具有重复值的列作为X轴时,我需要将相应的Y值一起添加。但是,我实现的方法似乎不起作用,而只是将第一个遇到的值添加到系列中。

1 个答案:

答案 0 :(得分:0)

您需要继承XYSeries并替换XYDataItem addOrUpdate(Number x, Number y)public void add(XYDataItem item, boolean notify),以便添加其他值,而不是覆盖现有的Y值。

或者遍历数据集两次以聚合重复项,然后将其添加到XYSeries