我想举例说明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 ......
答案 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);