JFreeChart如何使用TimeLine轴创建一个areachart

时间:2012-02-16 16:21:44

标签: jfreechart

我想举例说明jfreechart:XYAreaChartDemo2.java,一个xyareachart,但X轴必须是timeSeries。我试过这个:

TimeSeriesCollection dataset1 = new TimeSeriesCollection(timeSeries);//my timeseries 
    XYSeriesCollection dataset2 = new XYSeriesCollection();  

    JFreeChart chart = ChartFactory.createXYAreaChart("titulo","Eje x","eje Y", dataset2, PlotOrientation.VERTICAL,true, false,false);
    chart.setBackgroundPaint(Color.white);
    XYPlot xyplot= chart.getXYPlot();
    //fondo
    xyplot.setBackgroundPaint(Color.white);

    //pone la serie de time en el formato area (pero pierde el formato tiempo)
    xyplot.setDataset(dataset1);

但我的图表返回的方式类似于a轴,x轴从0到1.285 ......

2 个答案:

答案 0 :(得分:4)

我在这里有一个推荐的解决方案。

不要限制您使用TimeSeries X轴制作XYAreaChart。为什么不制作一个TimeSeries图表并将其呈现为XYAreaChart

以下是如何做到的。

// Create TimeSeriesChart
JFreeChart localJFreeChart = createChart(createDataset()); 
// Set to be XYAreaChart
XYItemRenderer render = new XYAreaRenderer(); 
XYPlot plot = localJFreeChart.getXYPlot();
plot.setRenderer(render);

其中

private static JFreeChart createChart(XYDataset paramXYDataset) {
    JFreeChart localJFreeChart = ChartFactory.createTimeSeriesChart("Legal & General Unit Trust Prices", "Date", "Price Per Unit", paramXYDataset, true, true, false);
    // ...
    return (JFreeChart) localJFreeChart;
}

可以看到完整代码here

大多数代码来自JFreeChart-1.0.14-demo.jar中的TimeSeriesDemo1,并由我自己修改以满足您的要求。

希望这可以提供帮助。

答案 1 :(得分:1)

我假设您正在使用TimeSeries并将RegularTimePeriod的实例添加到数据集中。默认情况下,方法ChartFactory. createXYAreaChart()会为域使用NumberAxis。相反,请使用DateAxis

XYPlot plot = chart.getXYPlot();
DateAxis domain = new DateAxis("Tiempo");
plot.setDomainAxis(domain);