2013-03-04 31 views
6

我有一個需要繪製的大型時間序列數據集,並且正在嘗試使用D3來完成此操作。我打算讓我的圖形具有x軸的時間,並允許圖形在x方向上移動。我想讓圖形只加載/顯示屏幕上當前時間範圍內的點。D3繪製數據集的選擇性部分

例如,如果我的數據集有1-100次的時間,但圖表從1-10開始顯示,那麼圖形只應該繪製1-10點圖形。然後用戶可能會移動到右側並看到時間5-15,並且圖表應該相應地更新。

任何人都可以向我解釋這可能通過d3完成嗎?我很難將立即加載的整個數據集的理解聯繫起來,並立即將其繪製爲選擇性地繪製數據子集。

回答

2

我認爲您正在尋找selection.filter()函數。例如,您可以有:

var allNodes = vis.selectAll("Nodes").data(data.nodes); 
var validNodes = allNodes.filter(function(d){return (d.time>1 && d.time <10)}); 
//use normal graph functions on validNodes. 

您也可以直接在過濾器數組上應用過濾器。

+0

感謝您的回覆。說得通。我可以動態知道如何設置濾波器功能的界限嗎?理想情況下,我希望獲得x軸的界限,如果您遵循。如果它們滾動到5-15,則邊界應該是d.time> = 5 && d.time <= 15等 – cdietschrun 2013-03-04 23:55:38

+0

您應該能夠在API中找到它:https://github.com/mbostock/d3/wiki/SVG-Axes#wiki軸。否則我不知道。 – 2013-03-04 23:59:05

+1

我用x.domain()給了我x軸的最小值和最大值。我會將其標記爲正確的,因爲我需要使用具有域信息的過濾器。 – cdietschrun 2013-03-05 00:40:35