0
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 中包含一个已格式化为 String[Rows][Columns] 的 CSV 文件。我要做的是制作一个用于 XYBarchart 的数据集,其中 startColumn 指示哪一列,for 循环用于遍历该列的行以获取 X 轴的值(键?)。Y 的值是从同一行的 endColumn 检索的。

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

4

1 回答 1

0

您将需要子类化XYSeries并替换其中一个XYDataItem addOrUpdate(Number x, Number y)public void add(XYDataItem item, boolean notify)以便添加附加值,而不是覆盖现有的 Y 值。

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

于 2013-04-16T09:22:20.007 回答