2016-07-18 4 views
1

시간/날짜가 내 도메인이고 정수가 내 범위 인 xy 차트를 플로팅하고 싶습니다. 나는 내가 원하는 방식대로 그래프를 얻는 법을 배웠다 .... domain/range min/max는 엑셀 셀에서 읽은 가장 낮은 값과 가장 높은 값이지만 차트에 아무것도 표시하지 않았지만 디버깅 후 ... 진행 방법이 확실하지JFreeChartSeries Series Exception ... "기간에 대한 관측치를 추가하려고합니다 ..."

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); 

나는 두 가지 선택을 가지고 있지만 그들 중 어느 것도 도움이 ... 내가 timeSeries.add()를 사용하는 경우 나는 그들이 완전히 다른 시간에도 불구하고 위에서 언급 한 오류가 .. .. 예 그들은 같은 날, 좀 더 구체적으로는 몇 분의 독서에서도 같은 분이지만 초와 밀리 초는 다릅니다. timeSeries.addOrUpdate()를 사용하면 모든 읽기를 완전히 덮어 쓰는 것처럼 보입니다. TimeSeries 변수 arraylist는 단지 정크를가집니다. 이것은 모든 값을 읽은 후에 발생합니다. [org.jfree.data.time.TimeSeriesDataItem @ 40c77f1e, null, null, ...] 더 많은 null ..... 나는 더 간단한 예제를 실행하고 있기 때문에 xy 쌍을 저장해야한다는 것을 알고있다. 시계열을 사용하여 ..... 나는 또한 시간이 그래서 그냥 ......

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

하지만 같은 문제가 가진 사용하지 않는 시도는 어떤 제안

답변

2

그것은 정상적인 주셔서 감사합니다. 시간을 인식하지 못하는 날의 TimePeriod 인 Day JfreeChart 클래스를 사용합니다.

/** 
* 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 { 

같은 FixedMillisecond 또는 밀리 초와 같은 미세한 TimePeriod으로 시도

, 당신은 더 이상 문제가 안된다. 같은하십시오 시계열에 내용

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

, 기간은 다음 중 하나 일 수 있습니다

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

그래서이 timeSeries.add (새 두 번째 (날짜), y_data가) 작동을; .... 그들은 초를이기 때문에 나는 추측하고있다. 그러나 두번의 읽기가 같은 초를 맞으면 같은 문제가 생길 것이다 ..... 맞습니까? – ponderingdev

+1

@ curiousmind1995 값 (y)을 나타내는 마침표 (x)가 1 초 미만이면 1 초보다 낮은 기간을 선택해야합니다. 그렇지 않으면 차트에서이를 구별 할 수 없습니다. – davidxxx