2011-10-11 10 views
16

मैं 5012 नोड्स वाले मेरे ग्राफ़ के एक बल-निर्देशित लेआउट उत्पन्न करने के लिए d3.js का उपयोग कर रहा हूं। 5K से कम कुछ भी के लिए, लाइब्रेरी अद्भुत काम करता है। मैं संदर्भ को बदलकर d3.js examples page के सीधे उदाहरण का उपयोग कर रहा हूं ताकि यह मेरी जेसन फ़ाइल लोड कर सके।डी 3 फोर्स लेआउट विज़ुअलाइज़ेशन एक बड़े डेटासेट का उपयोग करते समय धीमा हो गया?

क्या प्रतिपादन को गति देने के लिए कोई सुझाव हैं? यदि कोई अन्य विकल्प हैं, तो यह भी अच्छा होगा।

उत्तर

10

मुझे संदेह है कि आपको कोई विकल्प मिलेगा जो क्रॉल को धीमा किए बिना 50K नोड्स को बल-निर्देशित लेआउट में प्रस्तुत कर सकता है - most implementations are O(n3), और मुझे नहीं लगता कि डी 3 कोई अलग है।

यदि ऑफ़लाइन उपकरण स्वीकार्य हैं, तो आप Gephi, डेस्कटॉप-आधारित टूल देख सकते हैं जो बहुत बड़े ग्राफ से निपट सकता है।

+18

डी 3 बार्न्स-हट सन्निकटन है, जो यात्रा प्रति यह O (n एलजी एन) बनाता है उपयोग करता है। लेकिन सिमुलेशन के बिना भी, 50,000 नोड्स (और हालांकि कई लिंक) प्रस्तुत करना धीमा होने जा रहा है। – mbostock

6

मेरे लिए, यह एनीमेशन है कि बहुत धीमी है जब d3 बल निर्देशित ग्राफ के माध्यम से डेटा का एक बहुत प्रदर्शित है।

जब मुझे बहुत सारे नोड्स/लिंक प्रदर्शित करने की आवश्यकता होती है, तो मेरी योजना एनीमेशन को हटाने और एक स्थाई बल निर्देशित आरेखण करने जा रही है। शायद आप कोशिश कर सकते हैं? हां, यह कम मजेदार है, लेकिन एक बार आपके पास बहुत सारे नोड्स हैं, मुझे नहीं लगता कि एनीमेशन सहायक है।

+0

यह सच है। एनिमेशन का अधिक उपयोग नहीं किया जाएगा। मैंने अभी तक यह नहीं किया है, लेकिन मैं एक वैकल्पिक दृष्टिकोण पर काम कर रहा हूं जो केवल कुछ नोड्स का विस्तार होने पर ही प्रस्तुत करेगा - कुछ गतिशील नोड प्रतिपादन की तरह। – Legend

2

बल लेआउट में 1k से अधिक तत्वों के लिए, svg के बजाय कैनवास का उपयोग करने पर विचार करें। यह प्रदर्शन प्रतिपादन में मदद कर सकते हैं। उदाहरण देखें:

https://vida.io/documents/Ye5eGKJrfn3xBmnS3

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