2013-03-04 5 views
6

मेरे पास एक बड़ा समय श्रृंखला डेटा सेट है जिसे मुझे ग्राफ करने की आवश्यकता है, और मैं इसे करने के लिए डी 3 का उपयोग करने की कोशिश कर रहा हूं। मैं अपने ग्राफ को एक्स-अक्ष होने का समय रखने की योजना बना रहा हूं, और एक्स दिशा में ग्राफ के आंदोलन की अनुमति देता हूं। मैं ग्राफ को केवल स्क्रीन पर वर्तमान समय सीमा में मौजूद बिंदुओं को लोड/प्रदर्शित करना चाहता हूं।डी 3 ग्राफ़िंग डेटा सेट के चुनिंदा भाग

उदाहरण के लिए, यदि मेरे डेटासेट में समय 1-100 है, लेकिन ग्राफ दिखाए गए समय के साथ शुरू होता है, तो ग्राफ केवल ग्राफ अंक 1-10 होना चाहिए। फिर उपयोगकर्ता दाईं ओर जा सकता है और 5-15 बार देख सकता है और ग्राफ तदनुसार अपडेट होना चाहिए।

क्या कोई मुझे बता सकता है कि यह डी 3 के माध्यम से कैसे किया जा सकता है? मुझे एक बार में लोड होने वाले पूरे डेटा सेट से समझने में कठिनाई हो रही है और डेटा के सबसेट के चुनिंदा ग्राफिंग के लिए तत्काल तैयार किया गया है।

उत्तर

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

उत्तर के लिए धन्यवाद। समझ में आता है। क्या मैं गतिशील रूप से फ़िल्टर फ़ंक्शन के लिए सीमा निर्धारित करने के बारे में जान सकता हूं? आदर्श रूप से यदि आप अनुसरण करते हैं तो मैं एक्स अक्ष की सीमाएं प्राप्त करना चाहता हूं। यदि वे 5-15 तक स्क्रॉल करते हैं, तो बाध्य d.time> = 5 && d.time <= 15 आदि – cdietschrun

+0

होना चाहिए, आपको इसे API में ढूंढने में सक्षम होना चाहिए: https://github.com/mbostock/d3/विकी/एसवीजी-एक्सिस # विकी-अक्ष। अन्यथा मुझे नहीं पता। –

+1

मुझे x.domain() के साथ भाग्य मिला है और मुझे एक्स अक्ष का अधिकतम और अधिकतम दे रहा है। मैं इसे सही के रूप में चिह्नित करूंगा क्योंकि मुझे डोमेन जानकारी के साथ फ़िल्टर का उपयोग करने की आवश्यकता होगी। – cdietschrun

संबंधित मुद्दे