JFreeChart XYPlot时间序列y与x相交的值

时间:2016-11-19 01:41:01

标签: jfreechart timeserieschart

我有一个时间序列图表,其中包含每天绘制的数据,但并非所有日期都有数据。在这种情况下,如何确定/计算给定日期的y值。例如,在此图表中,如何计算x是2016年3月1日的y坐标?

chart

我看过类似的thread,但我无法将其应用于上述要求。

1 个答案:

答案 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;

}