这是我显示特定谷的代码,例如。平均一个文件。现在我想为两个文件中的值创建条形图,并用不同的颜色指示两者。请帮助:
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;
}
答案 0 :(得分:1)
您似乎为每个系列创建了单独的数据集,并为每个数据集创建了单独的图表。相反,您希望在一个图表中有一个具有两个系列的数据集。 DefaultCategoryDataset
可以拥有更多的一个系列;每个系列都由改变数据集的方法中的rowKey
参数标识。一个很好的例子是BarChartDemo1
,图为here三个系列; source code随附发行版。
另外,您可能还会看到org.jfree.data.io.CSV
是否符合您的要求。