我有一个时间序列图表,其中包含每天绘制的数据,但并非所有日期都有数据。在这种情况下,如何确定/计算给定日期的y值。例如,在此图表中,如何计算x是2016年3月1日的y坐标?
我看过类似的thread,但我无法将其应用于上述要求。
答案 0 :(得分: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;
}