2016-11-19 6 views
0

У меня есть диаграмма временных рядов, которая имеет данные, нанесенные на каждый день, однако не все дни имеют данные. В этом случае, как я могу определить/рассчитать значение y для данной даты. Например, на этой диаграмме, как я могу вычислить координату y, где x - 01-Мар-2016?JFreeChart XYPlot временные ряды y значение, которое пересекает x

chart

Я посмотрел на аналогичной thread, но я не мог применить его к вышеуказанному требованию.

+0

Пытались ли вы [_interpolation_] (http://stackoverflow.com/search?q=user%3A230513+%5Bjfreechart%5D+interpolation)? – trashgod

ответ

0

Нить, упомянутая выше, была на самом деле тем, что мне было нужно с некоторыми трюками для TimeSeries. Вот код:

private static double interpolate(TimeSeries s, long x) 
{ 
    List<?> items = s.getItems(); 
    for (int i=0; i<items.size()-1; i++) 
    { 
    TimeSeriesDataItem i0 = (TimeSeriesDataItem) items.get(i); 
    TimeSeriesDataItem i1 = (TimeSeriesDataItem) items.get(i+1); 
    long x0 = i0.getPeriod().getFirstMillisecond(); 
    double y0 = i0.getValue().doubleValue(); 
    long x1 = i1.getPeriod().getFirstMillisecond(); 
    double y1 = i1.getValue().doubleValue(); 

    if (x >= x0 && x <= x1) 
    { 
     double d = x - x0; 
     double a = d/(x1-x0); 
     double y = y0 + a * (y1 - y0); 
     return y; 
    } 
} 

// Should never happen 
return 0; 

}