2014-02-01 3 views
3

У меня есть диаграмма временных рядов. У меня есть ось x как дата, а ось Y - просто цифры. Я пытаюсь отформатировать дату на оси х, однако я все время получаю исключения. Мой код ниже:JFreeChart Дата осевая ошибка Форматирование вопроса

 TimeSeries trueSeries = new TimeSeries("True Data"); 
     TimeSeries regressionSeries = new TimeSeries("Regression Line"); 
     TimeSeries averageSeries = new TimeSeries("Moving Average"); 

     for (Date date : regression.keySet()) { 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(date); 
      int month = cal.get(Calendar.MONTH) + 1; 
      int day = cal.get(Calendar.DAY_OF_MONTH); 
      int year = cal.get(Calendar.YEAR); 
      regressionSeries.add(new Day(day, month, year), 
        regression.get(date)); 
      averageSeries.add(new Day(day, month, year), 
        movingAverage.get(date)); 
      trueSeries.add(new Day(day, month, year), trueData.get(date)); 
     } 
     TimeSeriesCollection dataset = new TimeSeriesCollection(); 
     dataset.addSeries(trueSeries); 
     dataset.addSeries(regressionSeries); 
     dataset.addSeries(averageSeries); 
     JFreeChart chart = ChartFactory.createXYLineChart(
       stock.getCompanyName() + " (" + stock.getTicker() + ")", 
       "Date", // x-axis Label 
       "Close Price", // y-axis Label 
       dataset, // Dataset 
       PlotOrientation.VERTICAL, // Plot Orientation 
       true, // Show Legend 
       true, // Use tooltips 
       false // Configure chart to generate URLs? 
       ); 

А потом я пытаюсь бросить ось х в простой формат даты, а именно:

XYPlot plot = (XYPlot) chart.getPlot(); 
DateAxis axis = (DateAxis) plot.getDomainAxis(); 
axis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yyyy")); 

Когда я запускаю это я получаю следующее исключение:

java.lang.ClassCastException: org.jfree.chart.axis.NumberAxis не может быть приведен к org.jfree.chart.axis.DateAxis

может кто-нибудь пожалуйста, скажите мне, что я делаю неправильно?

+1

Возможный дубликат [Добавление даты/времени в график JFreeChart] (http://stackoverflow.com/questions/12272679/adding-date-time-to-jfreechart-graph) – trashgod

ответ

6

В соответствии с этим: Adding date/time to JFreeChart graph =>

«[...] вы используете ChartFactory.createXYLineChart(), которая создает NumberAxis для домена Вместо этого используйте ChartFactory.createTimeSeriesChart(), который. создает DateAxis для домена. "trashgod

1

Использование

XYPlot plot = (XYPlot) chart.getPlot(); 
DateAxis dateAxis = new DateAxis(); 
dateAxis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yyyy")); 
plot.setDomainAxis(dateAxis); 

XYPlot.setDomainAxis принимает ValueAxis, который является родителем DateAxis. Таким образом, это позволит избежать ошибки.

Смежные вопросы