i have a question/problem when using different renderers for a chart.
i have 4 XYSeries which i want to show in the following way:
- series 1, 2, and 3 should be drawn with a XYStepAreaRenderer
- series 4 should be drawn with a XYStepRenderer
however, when the plot is drawn i get the following exception:
Code: Select all
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Index
'index' out of bounds.
at org.jfree.chart.plot.XYPlot.getDomainAxisForDataset(XYPlot.java:2697)
at org.jfree.chart.plot.XYPlot.drawDomainMarkers(XYPlot.java:2851)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:2208)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1039)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:1269)
at javax.swing.JComponent.paint(JComponent.java:1003)
Code: Select all
dataPoints = new XYSeriesCollection();
dataPoints.addSeries(yellowThreshold);
dataPoints.addSeries(orangeThreshold);
dataPoints.addSeries(redThreshold);
dataPoints.addSeries(values);
lineChart = ChartFactory.createTimeSeriesChart("", "", "Day+Hour:Minute:Second",
dataPoints, true, true, false);
((NumberAxis)lineChart.getXYPlot().getRangeAxis()).setNumberFormatOverride(new DecimalFormat() {
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) {
return format((long)number, result, fieldPosition);
}
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) {
result.insert(fieldPosition.getBeginIndex(), ElapsedTime.format(number));
return result;
}
});
lineChart.getXYPlot().setRenderer(0, new XYStepAreaRenderer());
lineChart.getXYPlot().setRenderer(1, new XYStepAreaRenderer());
lineChart.getXYPlot().setRenderer(2, new XYStepAreaRenderer());
lineChart.getXYPlot().setRenderer(3, new XYStepRenderer());
thomas