2016-07-18 6 views
1

Ich möchte ein xy-Diagramm zeichnen, wobei Uhrzeit/Datum meine Domäne und ganze Zahlen meine Reichweite sind. Ich habe es geschafft, mein Diagramm so zu bekommen, wie ich es will .... Domäne/Bereich min/max ist der niedrigste und höchste Wert, den es von den Excel-Zellen einliest, aber es hat nichts auf dem Diagramm gezeichnet, aber nach dem Debuggen bin ich es JFreeChartSeries Series Exception ... "versucht, eine Beobachtung für den Zeitraum hinzuzufügen ..."

TimeSeries timeSeries = new TimeSeries("time"); 
    TimeSeriesCollection timeDataSet = new TimeSeriesCollection(timeSeries); 
    while (rowIterator.hasNext()) { 
      Date date; 


      Number y_data = 0; 

      row = (XSSFRow) rowIterator.next(); 
      XSSFCell x_col = row.getCell(0); 
      date = x_col.getDateCellValue(); 

      Time t = new Time(date.getTime()); 

      XSSFCell y_col = row.getCell(1); 
      y_data = y_col.getNumericCellValue(); 
      ///////PROBLEM BELOW 

      timeSeries.add(new Day(t), y_data); //timeSeries.addOrUpdate(new Day(t), y_data) 

     } 
    timeDataSet.addSeries(timeSeries); 

ich habe zwei Möglichkeiten nicht sicher, wie ...

gehen, aber keiner von ihnen helfen ... wenn ich timeSeries.add() verwenden, erhalte ich die oben erwähnten auch Fehler, obwohl sie völlig unterschiedliche Zeiten sind .. ..yes sie sind am selben Tag, genauer gesagt, sogar die gleichen Minuten für einige liest, aber Sekunden und Millisekunden unterscheiden sich. Wenn ich timeSeries.addOrUpdate() benutze, scheint es jeden Lesevorgang vollständig zu überschreiben und mein TimeSeries Variablenarraylist hat einfach Junk ... das ist es was es hat nachdem es alle Werte gelesen hat, [org.jfree.data.time.TimeSeriesDataItem @ 40c77f1e, null, null, ...] nur mehr null ..... Ich weiß, dass es die xy-Paare speichern sollte, weil ich ein anderes, einfacheres Beispiel ausführe und es die passenden Paare hat, vielleicht ist das anders, weil ich es bin mit Timeseries ..... ich habe auch versucht, nicht mit Time so einfach es

timeSeries.addOrUpdate(new Day(date), y_date); 

aber gleichem Problem sein mit ...... danke für alle Vorschläge

Antwort

2

es ist normal. Sie verwenden die Day JfreeChart-Klasse, die eine Zeitperiode für einen Tag ohne Zeitbewusstsein darstellt.

/** 
* Represents a single day in the range 1-Jan-1900 to 31-Dec-9999. This class 
* is immutable, which is a requirement for all {@link RegularTimePeriod} 
* subclasses. 
*/ 
public class Day extends RegularTimePeriod implements Serializable { 

mit einer feineren Timeperiod Versuche wie FixedMillisecond oder Millisekunde, sollten Sie das Problem nicht mehr. Wie zum Beispiel:

timeSeries.add(new FixedMillisecond (date.getTime()), y_data); 

Zu Ihrer Information in einer Zeitreihe kann die Zeitdauer einen der folgenden sein:

Year 
Quarter 
Month 
Week 
Day 
Hour 
Minute 
Second 
Millisecond 
FixedMillisecond 
+0

So funktioniert das timeSeries.add (neu Zweites (Datum), y_data); .... Ich vermute, weil sie verschiedene Sekunden sind, aber ich hätte das gleiche Problem, wenn zwei Lese die gleichen Sekunden hätten ..... richtig? – ponderingdev

+1

@ curiousmind1995 Genau, wenn die Periode (x) für die Darstellung eines Wertes (y) weniger als eine Sekunde ist, müssen Sie einen Zeitraum von weniger als einer Sekunde wählen. Andernfalls wäre es nicht möglich, sie im Diagramm zu unterscheiden. – davidxxx

Verwandte Themen