在jfreechart中循环数据集失败



可以在jfreechart ?中创建一个循环数据集。我有一个包含数据的List。下面是代码

List<ReportChart> theDatas;
public CategoryDataset createDataset() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    for (ReportChart reportChart : theDatas) {                      
        dataset.setValue(reportChart.getLevensthein(), reportChart.getMainFileName(), reportChart.getComparingFileName());
        dataset.setValue(reportChart.getJaccard(), reportChart.getMainFileName(), reportChart.getComparingFileName());
        dataset.setValue(reportChart.getCosine(), reportChart.getMainFileName(), reportChart.getComparingFileName());

    }
    return dataset;
}

在上面的代码中,我只是从我的列表中获得最后的数据?非常感谢你的帮助……

edit =============

我尝试了一些改变,但我不知道如何解决这个问题。

public CategoryDataset createDataset() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    for (ReportChart reportChart : theDatas) {
        final String nameOfMainFile = reportChart.getMainFileName();
        final String nameOfComparingFile = reportChart.getComparingFileName();
        final double scoreOfLevenstheins = reportChart.getLevensthein();
        final double scoreOfJaccard = reportChart.getJaccard();
        final double scoreOfCosine = reportChart.getCosine();
        final String algoritma1 = "Levenstheins";
        final String algoritma2 = "Jaccard";
        final String algoritma3 = "Cosine";
        System.out.println(algoritma1 + " : " + "<" + nameOfMainFile + " || " + nameOfComparingFile + ">" + " : " + scoreOfLevenstheins);
        System.out.println(algoritma2 + "      : " + "<" + nameOfMainFile + " || " + nameOfComparingFile + ">" + " : " + scoreOfJaccard);
        System.out.println(algoritma3 + "       : " + "<" + nameOfMainFile + " || " + nameOfComparingFile + ">" + " : " + scoreOfCosine);
        dataset.addValue(scoreOfLevenstheins, algoritma1, nameOfComparingFile);
        dataset.addValue(scoreOfJaccard, algoritma2, nameOfComparingFile);
        dataset.addValue(scoreOfCosine, algoritma3, nameOfComparingFile);
    }
    return dataset;
}

这是我的应用程序的第一个屏幕截图,当我选择数据:https://www.dropbox.com/s/t46mzo42of7hdyl/failed1.png,这是图形来表示这两个代码的相似性https://www.dropbox.com/s/a5dpzf9j22tfqdh/failed2.png

.TrashGod先生。这就是问题所在……在JfreeChart中循环List of Data失败

==== edit again ====

我一直在尝试新的实验,数据集。addvalue需要唯一的ID和值在可比列键。代码如下:

DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
    for (ReportChart object : theDatas) {
        String algoritma1 = "Levenstheins";
        String algoritma2 = "Jaccard";
        String algoritma3 = "Cosine";
        String nameOfComparingFile = object.getComparingFileName();
        double scoreLv = object.getLevensthein();
        double scoreJc = object.getJaccard();
        double scoreCo = object.getCosine();

        defaultcategorydataset.addValue(scoreLv, algoritma1, nameOfComparingFile);
        defaultcategorydataset.addValue(scoreJc, algoritma2, nameOfComparingFile);
        defaultcategorydataset.addValue(scoreCo, algoritma3, nameOfComparingFile);
        String s = "First";
        String s1 = "Second";
        String s2 = "Third";
        String s3 = "Category 1";
        String s4 = "Category 2";
        String s5 = "Category 3";
        String s6 = "Category 4";
        String s7 = "Category 5";
        defaultcategorydataset.addValue(scoreLv, algoritma1, s3);
        defaultcategorydataset.addValue(scoreJc, algoritma2, s4);
        defaultcategorydataset.addValue(scoreCo, algoritma3, s5);
        defaultcategorydataset.addValue(scoreLv, algoritma1, s6);
        defaultcategorydataset.addValue(scoreJc, algoritma2, s7);
        defaultcategorydataset.addValue(scoreCo, algoritma3, s3);
        defaultcategorydataset.addValue(scoreLv, algoritma1, s4);
        defaultcategorydataset.addValue(scoreJc, algoritma2, s5);
        defaultcategorydataset.addValue(scoreCo, algoritma3, s6);
        defaultcategorydataset.addValue(scoreLv, algoritma1, s7);
        defaultcategorydataset.addValue(scoreJc, algoritma2, s3);
        defaultcategorydataset.addValue(scoreCo, algoritma3, s4);
        defaultcategorydataset.addValue(scoreLv, algoritma1, s5);
        defaultcategorydataset.addValue(scoreJc, algoritma2, s6);
        defaultcategorydataset.addValue(scoreCo, algoritma3, s7);

    }

从中,我知道我需要一个可比的。如何让他成为真正的垃圾之神。我从你指向我的链接中尝试了这个代码

public class UniqueValue implements  Comparable<UniqueValue>{
private final String uniqueId;
private final String value;
public UniqueValue(String uniqueId, String value) {
    this.uniqueId = uniqueId;
    this.value = value;
}
UniqueValue(String nameOfComparingFile, double scoreLv) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
public int compareTo(UniqueValue o) {
    return uniqueId.compareTo(o.uniqueId);
}
@Override
 public int hashCode() {
    return uniqueId.hashCode();
}
@Override
 public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj instanceof UniqueValue) {
        return uniqueId.equals(((UniqueValue)obj).uniqueId);
    }
    return false;
}
  @Override
public String toString() {
        return value;
    }

}

现在,如何使用这个类…?

查看setValue()方法的API文档—第一个参数是数据值,然后是标识值所在单元格的行键和列键。所以在你的代码中,你在循环的每次迭代中设置一个单元格的值三次。您将以第三次设置的值结束。

最新更新