2012-12-07 8 views
9

मैं डी 3 का उपयोग करके एक स्कैटर प्लॉट बनाना चाहता हूं जिसमें एक्स-अक्ष में कुछ प्रकार के स्लाइडर का उपयोग करके एक समय में केवल एक छोटे से हिस्से को देखने की क्षमता है। क्या जावास्क्रिप्ट में कोई तरीका है जहां मैं डेटा को कुशलतापूर्वक बफर कर सकता हूं और तत्वों को तेज़ी से एक्सेस कर सकता हूं क्योंकि उपयोगकर्ता बाएं या दाएं स्क्रॉल करता है?डी 3 स्कैटरप्लॉट हजारों डेटा पॉइंट्स

मेरा लक्ष्य इस प्रोटोविस उदाहरण here के समान है, लेकिन डेटा की मात्रा 10 गुना के साथ है। यह उदाहरण चुटकुले करता है जब मैं कई डेटा पॉइंट करता हूं।

उत्तर

6

मैंने लगभग 10k अंकों के साथ एक स्कैटरप्लॉट किया है जहां मुझे साजिश के अनुभागों को अंतःक्रियात्मक रूप से फ़िल्टर करने की आवश्यकता है। एक महत्वपूर्ण समारोह

  • उपयोग आपकी .data() ऑपरेटर के लिए के रूप में यह इस tutorial के अंत में किया जाता है: मैं सुझावों कि मेरे लिए काम किया है, जो मुझे आशा है कि कुछ उम्मीद है कि आप भी मदद मिल सकती है की एक श्रृंखला का हिस्सा। चाबियों का उपयोग करने का लाभ यह है कि आपको उन तत्वों को अपडेट करने की आवश्यकता नहीं है जो परिवर्तित नहीं होते हैं।
  • डी 3 से संबंधित नहीं है, लेकिन मैंने अपनी डेटा स्पेस को ग्रिड में विभाजित किया है, ताकि प्रत्येक डेटा पॉइंट एक सेल से जुड़ा हो (दूसरे शब्दों में प्रत्येक सेल बिंदुओं के सेट के लिए एक सूचकांक है)। इस तरह, जब मुझे एक्सेस करने की आवश्यकता होती है, तो मान लें, x_0 से x_1 तक, मुझे पता था कि मुझे कौन सी कोशिकाओं की आवश्यकता है, और इसलिए मैं संभावित डेटा बिंदुओं (सभी बिंदुओं के साथ पुनरावृत्ति से बचने) के अधिक परिष्कृत सेट तक पहुंच सकता हूं।
  • बचें बदलाव: मेरे निजी अनुभवों से .transition() बहुत चिकनी जब एसवीजी तत्वों की हजार चयन किया जाता है नहीं है
  • मेरे मामले में यह अधिक अंक बनाने के लिए सुविधाजनक था (यह नए संस्करण में या तेज प्रोसेसर के साथ अब बेहतर हो सकता है) अदृश्य (.attr("display","none")) या एसवीजी तत्वों को हटाने और बनाने के बजाए दृश्यमान (मुझे आश्चर्य है कि यह अधिक समय भी कुशल है)