我正在使用java,我想绘制一个同时包含至少两行的折线图。我每次只能传递一个DefaultCategoryDataset作为参数,而这个DefaultCategoryDataset代表一行。那我怎么能这样做呢?
ChartFactory.createLineChart("String", "String", "String", "DefaultCategoryDataset", "PlotOrientation.HORIZONTAL", "boolean", "boolean", "boolean");
答案 0 :(得分:1)
您必须使用多个系列“提供”数据。
这是我用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
);