2010-02-27 41 views
0

我創建了一個Flex LineChart,可以顯示隨着時間推移的高潮和低潮的預測。我正在使用LineSeries和form =「curve」,它會產生一個很好的正弦波形圖,代表隨着時間的推移水位。 X軸表示時間,Y軸表示水位。我必須使用的唯一數據點是高潮和低潮值,但我想知道如何確定沿線的任意x值的y值。Flex LineSeries - 沿曲線找到y值

例如,假設我有以下數據點:

var highLowTidePredictions:ArrayCollection = new ArrayCollection([ 
    { Date: new Date(2010, 1, 26, 7, 15), waterLevel: 20.3 }, 
    { Date: new Date(2010, 1, 26, 13, 15), waterLevel: -1.2 }, 
    { Date: new Date(2010, 1, 26, 19, 15), waterLevel: 19.0 }, 
    { Date: new Date(2010, 1, 27, 1, 15), waterLevel: -1.0 }, 
    { Date: new Date(2010, 1, 27, 7, 15), waterLevel: 18.7 }, 
    { Date: new Date(2010, 1, 27, 13, 15), waterLevel: 0.7 } 
]); 

這裏是我的折線圖:

<mx:LineChart id="highLowLinePredictionsLineChart" 
    width="100%" height="100%" 
    dataProvider="{highLowTidePredictions}" 
    showDataTips="true"> 

    <mx:horizontalAxis> 
      <mx:DateTimeAxis id="dta" /> 
    </mx:horizontalAxis> 
    <mx:series> 
      <mx:LineSeries id="lineSeries1" 
        xField="Date" yField="waterLevel" 
        form="curve" interpolateValues="true" sortOnXField="true"/> 
    </mx:series> 
</mx:LineChart> 

而且我想知道在2010年2月26日的waterLevel在09: 00。

這將是冷靜,如果我能做到

var date:Date = new Date(2010, 1, 26, 9, 0); 
var waterLevel:Number = lineSeries1.getYValue(date); 

但是,唉,這getYValue(xValue)函數不存在。

回答

0

好吧,我想通了。只好回到11年級的數學課。

任何人誰是好奇,這裏是我想出了以下功能:

如果高(或低)潮w1單位在date1及以下的低(或高)潮w2單位在date2,然後以下功能在date處給出了水位w

private function getWaterLevel(date:Date, date1:Date, date2:Date, w1:Number, w2:Number):Number 
{ 
    var t:Number = date.getTime(); 
    var t1:Number = date1.getTime(); 
    var t2:Number = date2.getTime(); 

    var A:Number = (w2 - w1)/2; 
    var B:Number = 2 * (t2 - t1); 
    var C:Number = t1 + ((t2 - t1)/2); 
    var D:Number = w1 + ((w2 - w1)/2); 
    return A * Math.sin(((2 * Math.PI)/B) * (t - C)) + D; 
} 
1

LineSeries的插值屬性將填充第一個值和最後一個值之間的間隔。然而,你的問題似乎是你正在尋求通過預測來延長曲線。插值在這種情況下不起作用。

我建議找到合適的水位數據估計迴歸模型,並將其應用於曲線上的更多點。根據我有限的經驗,我可以推薦一個依賴於稱爲Spline模型的加權數據點的模型。但是,我不是統計員,可能對估算模型建議有誤。

+0

我不想在任一方向上延伸曲線,而是要確定哪些值沿渲染線顯示。看來如果這條線是可見的,那麼應該有一種方法來確定線上的y值,但也許這是不可能的。 – echo 2010-02-27 06:31:31