JFreeChart Как создать площадку с осью временной шкалы - PullRequest
1 голос
/ 16 февраля 2012

Я хочу сделать пример 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);

но мой график возвращается в виде диаграммы с осью х от 0 до 1,285 ......

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012

У меня есть рекомендуемое решение здесь.

Не ограничивайте себя в создании XYAreaChart с осью TimeSeries X. Почему бы не создать диаграмму 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;
}

Полный код можно увидеть здесь .

Большая часть кода взята из TimeSeriesDemo1 в JFreeChart-1.0.14-demo.jar и изменена мной для удовлетворения ваших требований.

Надеюсь, это поможет.

1 голос
/ 17 февраля 2012

Я предполагаю, что вы используете TimeSeries и добавляете экземпляры RegularTimePeriod в набор данных. По умолчанию метод ChartFactory. createXYAreaChart() использует NumberAxis для домена. Вместо этого используйте DateAxis.

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