0

これは、特定の値を表示するための私のコードです。1ファイルの平均。ここで、両方のファイルの値の棒グラフを作成し、両方を異なる色で示したいと思います。助けてください:

public JFreeChart createBarChartFromCSV() {

    CSVFileReader csvReader = new CSVFileReader();
    List<String[]> csvData = null; 
    int indexOfAverage = 0;

    csvData = csvReader.getDataFromCSV(CSVFileReader.CSVFILENAME);

    for(String[] columnArray : csvData)
        for(int i = 0; i< columnArray.length; i++)
            if(columnArray[i].equalsIgnoreCase("average")){
                indexOfAverage = i;
                break;
            }

    if(indexOfAverage == 0){
        System.err.println("Error retrieving data from CSV File !!");
        System.exit(0);
    }
    JFreeChart barChart = generateBarChart(csvData, indexOfAverage);

    return barChart;
}


private JFreeChart generateBarChart(List<String[]> csvData, int columnIndex){

    DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

    final String YAXIS_NAME = csvData.get(0)[columnIndex]; //value returned is "average"
    final String XAXIS_NAME = csvData.get(0)[0]; //value returned is "sampler_label"

    for(int i = 1; i < csvData.size() - 1; i++){

        long averageValue = Long.parseLong(csvData.get(i)[columnIndex]);
        String columnKey = csvData.get(i)[0];

        dataSet.setValue(averageValue, YAXIS_NAME, columnKey); // plot the graph
    }

    JFreeChart chart = ChartFactory.createBarChart("Comparison between the average of 2 values", XAXIS_NAME, YAXIS_NAME, dataSet, PlotOrientation.VERTICAL, false, true, false);
    return chart;
}
4

1 に答える 1

1

シリーズごとに個別のデータセットと、データセットごとに個別のグラフを作成しているようです。代わりに、1 つのグラフに 2 つの系列を含む 1 つのデータセットが必要です。ADefaultCategoryDatasetは複数のシリーズを持つことができます。各シリーズはrowKey、データセットを変更するメソッドのパラメーターによって識別されます。従うべき良い例は、ここに 3 つのシリーズBarChartDemo1で描かれています。ソースコードはディストリビューションに付属しています。

余談ですがorg.jfree.data.io.CSV、要件を満たしているかどうかも確認できます。

于 2013-02-28T17:49:21.310 に答える