Java 将重复X值的Y值添加到XYSeries中 public XYSeriesCollection CreateDataset(int-startColumn、int-endColumn、int-startRow、int-endRow){ XYSeriesCollection数据集=新的XYSeriesCollection(); XYSeries系列=新XYSeries(“测试”); 对于(int j=startRow;j

Java 将重复X值的Y值添加到XYSeries中 public XYSeriesCollection CreateDataset(int-startColumn、int-endColumn、int-startRow、int-endRow){ XYSeriesCollection数据集=新的XYSeriesCollection(); XYSeries系列=新XYSeries(“测试”); 对于(int j=startRow;j,java,2d,jfreechart,Java,2d,Jfreechart,m_数据中包含一个CSV文件,该文件已格式化为字符串[行][列]。我要做的是创建一个用于XYBarchart的数据集,其中startColumn指示哪一列,而for循环用于遍历该列的行以获取X轴(键?)的值。Y的值从同一行的endColumn中检索 但是,在m_数据数组中有重复的值,因此当使用具有重复值的列作为X轴时,我需要将相应的Y值相加。但是,我实现的方法似乎不起作用,而是将遇到的第一个值添加到序列中。您需要将XYSeries子类化,并替换XYDataItem addOrUpdate(数字x

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


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

您需要将
XYSeries
子类化,并替换
XYDataItem addOrUpdate(数字x,数字y)
public void add(XYDataItem,布尔通知)
以便添加附加值,而不是覆盖现有Y值

或者,对数据集进行两次迭代一次,以聚合重复项,然后将其添加到
XYSeries

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;

}