
Basically I create a XYSeriesCollection with 2 series and 20 items in each. Then I use the following code to create a chart:
Code: Select all
JFreeChart chart = ChartFactory.createScatterPlot(
"Events", // chart title
"Distance (mi)", // domain axis label
"Time (s)", // range axis label
dataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // url's
);
Code: Select all
generateToolTips(dataset, chart.getXYPlot());
Code: Select all
private void generateToolTips(XYSeriesCollection collection, XYPlot plot)
{
ArrayList ttList;
String tt;
XYSeries series;
CustomXYToolTipGenerator ttGen;
XYItemRenderer renderer;
int i, imax, s, smax = collection.getSeriesCount();
for (s=0; s<smax; s++)
{
ttList = new ArrayList();
series = collection.getSeries(s);
imax = series.getItemCount();
for (i=0; i<imax; i++)
{
tt = "Event " + (s+i) + " \n Distance: " + series.getDataItem(i).getX()
+ "\n Time: " + series.getDataItem(i).getY();
ttList.add(tt);
}
ttGen = new CustomXYToolTipGenerator();
// ttGen.generateToolTip(collection, s, i);
ttGen.addToolTipSeries(ttList);
renderer = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, ttGen);
plot.setRenderer(i, renderer);
}
}
when I call this method:java.lang.IllegalArgumentException: Index 'index' out of bounds.
at org.jfree.chart.plot.XYPlot.getDomainAxisForDataset(XYPlot.java:2679)
...
org.jfree.chart.servlet.ServletUtilities.saveChartAsPNG(ServletUtilities.java:187)
...
Code: Select all
String filename = ServletUtilities.saveChartAsPNG(chart, CHART_WIDTH, CHART_HEIGHT, new ChartRenderingInfo(new StandardEntityCollection()), request.getSession());
Code: Select all
plot.setRenderer(i, renderer);
Code: Select all
plot.setRenderer(renderer);