2013-10-28 58 views
2

我有一個離散點陣列,我正在繪製折線圖。 D3正在處理離散數據點的內插以創建一條平滑線。使用D3來計算重採樣的樣條線

E.g.

var data = [0, 1, 2, 4, 8, 4, 2, 1, 0]; 
var line = d3.svg.area() 
        .x(function (d, i) { return i * lineWidth }) 
        .y1(function (d, i) { return h - hOf(d) }) 
        .y0(h) 
        .interpolate("cardinal") 
        .data(data); 

必要的是,在某處d3的腸子,一個基數樣條函數被計算與我把它作爲控制點的數據。

我想恢復該樣條函數,以便我可以基於該樣條重新採樣我的數據。

這將是這個樣子:

var spline = line.getSpline(); 
var sample = spline(3.3); 

D3是否公開其樣條函數?

回答

2

樣條函數沒有公開,但取決於你想要的,你可能能夠從線/區域獲得信息。也就是說,撥打line(x)可以爲您提供位置爲x的值。

+0

謝謝拉爾斯。我注意到'line([x])'給了我一個適合添加到svg路徑的'd' attr的路徑註釋,但是清理它有點麻煩。如果這是d3公開的最好的,我將使用另一個線性代數庫來計算我自己的樣條線並自己接管這個工作。 – masonk

+0

您可以隨時修改源代碼,但這是默認情況下顯示的內容。 –