我正在使用java,我想绘制一个同时包含至少两行的折线图。我每次只能传递一个DefaultCategoryDataset作为参数,而这个DefaultCategoryData集代表一行。那么我该怎么做呢?
ChartFactory.createLineChart("String", "String", "String", "DefaultCategoryDataset", "PlotOrientation.HORIZONTAL", "boolean", "boolean", "boolean");
您必须用多个系列"馈送"数据。
以下是我如何使用XYLineChart:处理此问题
1) 我有一个私人对象
private XYSeriesCollection data =null;
2) 它被初始化为一个方法,然后调用另一个"馈送"数据的方法。
data = new XYSeriesCollection();
fillXYSeries();
3) 这是一种方法:
private void fillXYSeries(){
data.removeAllSeries();
for(int i=0;i<tables.size();i++){
final XYSeries series = new XYSeries(tables.get(i).getName());
for(int j=0;j<mostIntensiveTables.get(i).getChangesForChart().size();j++){
series.add(j,mostIntensiveTables.get(i).getChangesForChart().get(j));
}
int found=0;
for(int k=0;k<data.getSeriesCount();k++){
if(data.getSeries(k)==series){
found=1;
break;
}
}
if(found==0){
data.addSeries(series);
}
}
}
最后,我用数据对象作为参数构建了我的图表:
final JFreeChart chart = ChartFactory.createXYLineChart(
"Most Updated Tables",
"Version ID",
"Number of Changes",
data,
PlotOrientation.VERTICAL,
true,
true,
false
);