2014-10-09 7 views
8

नीचे टिक समारोह का एक सामान्य उदाहरण है? इसमें क्या गुण हैं? मुझे "ई" का कोई विवरण नहीं मिल रहा है, और e.alpha का अर्थ क्या है। हां, मैंने Google का उपयोग किया लेकिन बिना किसी परिणाम के।d3.js बल को कॉल किया गया `e` पैरामीटर क्या कॉलबैक फ़ंक्शन टिकता है?</p> <pre><code>function tick(e) { nodes .each(cluster(10 * e.alpha * e.alpha)); } </code></pre> <p>जो मुझे के "ई" परिभाषा बता सकते हैं:


नीचे दी गई सहायता के लिए धन्यवाद।

मैं कुछ कोड है, जो उपयोग

var force = d3.layout.force() 
     .nodes(nodes) 
     .size([width, height]) 
     .charge(-70) 
     .gravity(0.1) 
     .on("tick", tick) 
     .start(); 

तो यह सिर्फ मामले आप अनुमान लगा है को कॉपी कर रहा हूँ। मैं डी 3 के लिए नया हूं, बल की एक स्किम। प्लेआउट एपीआई ने मुझे कोई सुराग नहीं दिया। आपके बहुमूल्य समय के लिए धन्यवाद!

+1

'भीतर [इस पोस्ट] e.alpha' (के लिए खोज http://flowingdata.com/2012/08/02/how-to-make-an-interactive-network- दृश्य /)। – FernOfTheAndes

+0

कृपया इस समारोह को कहां मिला है इसके बारे में अधिक संदर्भ दें। अपने आप को एक फ़ंक्शन प्रस्तुत करना आपको पैरामीटर की प्रकृति के बारे में कुछ भी नहीं बताता है जो इसे पारित किया जाएगा। मैंने अपने जवाब में एक उचित अनुमान लगाया है, लेकिन समस्या का निदान करने के लिए पर्याप्त जानकारी रखने के लिए सवाल बंद होना चाहिए। – AmeliaBR

उत्तर

14

अपने "सामान्य" समारोह के पूरे संदर्भ के बिना, इस एक अनुमान का एक सा है, लेकिन यहाँ जाता है:

tick d3 भीतर कई संदर्भों में प्रयोग किया जाता है। alpha के इनक्यूजन का सुझाव है कि यह force layout tick function है, जिसे टिक टिक ऑब्जेक्ट द्वारा टिक इवेंट पर कहा जाता है, जिस स्थिति में e टिक ईवेंट ऑब्जेक्ट होगा।

टिक घटना के बारे में बहुत सारे दस्तावेज नहीं हैं, क्योंकि अधिकांश उदाहरण इसका उपयोग नहीं करते हैं। आप source code का निरीक्षण किया, तो आप

// A rudimentary force layout using Gauss-Seidel. 
d3.layout.force = function() {      //line 11 
    var force = {}, 
     event = d3.dispatch("start", "tick", "end"); 
    /* ... */ 
    force.tick = function() {      //line 58 
     // simulated annealing, basically 
     if ((alpha *= .99) < .005) { 
      event.end({type: "end", alpha: alpha = 0}); 
      return true; 
     } 
     /* code to implement default force layout adjustments */ 
     event.tick({type: "tick", alpha: alpha}); //line 128 
    }; 
    /* ... */ 
    return d3.rebind(force, event, "on");   //line 305 
}; 

दूसरे शब्दों में देखेंगे, टिक घटना d3.dispatch प्रक्रिया का उपयोग कर d3 स्रोत कोड में बनाई गई कस्टम घटना के तीन प्रकार से एक है। विशेष रूप से tick ईवेंट आंतरिक टिक फ़ंक्शन के अंत में भेजा जाता है, और केवल एक कस्टम प्रॉपर्टी होती है: बल 0 लेआउट के भीतर वर्तमान alpha पैरामीटर। ताकि ये घटनाएं वास्तव में कहीं भी जाएं, on इवेंट प्रेषक ऑब्जेक्ट की विधि rebound बल लेआउट ऑब्जेक्ट पर है, ताकि उपयोगकर्ता कस्टम ईवेंट के लिए श्रोता फ़ंक्शंस पंजीकृत कर सके।

यदि सब है कि आप के लिए बहुत ज़्यादा d3 internals, बस इन ब्यौरों पर ध्यान केंद्रित:

  • e एक कस्टम घटना अपने टिक कार्य करने के लिए हर बार यह कहा जाता है पारित कर दिया वस्तु
  • e.alpha है बल लेआउट का वर्तमान अल्फा मान, जो डिफ़ॉल्ट रूप से 0.1 से शुरू होता है और प्रत्येक टिक पर friction पैरामीटर के अनुसार) कम हो जाता है जब तक कि यह 0.005 से नीचे नहीं गिर जाता है और लेआउट फ्रीज:

    आंतरिक रूप से, लेआउट एक शीतलन पैरामीटर alpha का उपयोग करता है जो लेआउट तापमान को नियंत्रित करता है: क्योंकि भौतिक सिमुलेशन एक स्थिर लेआउट पर अभिसरण करता है, तापमान गिरता है, जिसके कारण नोड्स धीरे-धीरे आगे बढ़ता है। आखिरकार, alpha थ्रेसहोल्ड से नीचे गिरता है और सिमुलेशन पूरी तरह से बंद हो जाता है, सीपीयू को मुक्त करता है और बैटरी नाली से परहेज करता है। (From the API wiki for force.start)

+0

क्षमा करें, लेकिन मुझे आपको एक उपरोक्त से अधिक धन्यवाद देना है। वर्तमान में यह है, afaik, पैरामीटर 'पर' ("टिक" 'फ़ंक्शन, और 'अल्फा' घटक का अर्थ क्या है (डी 3 स्रोत कोड के अलावा) का एकमात्र सार्वजनिक दस्तावेज। E.alpha' किसी भी स्पष्टीकरण के बिना कई उदाहरणों (जैसे Google "d3 एकाधिक बल लेआउट") में प्रयोग किया जाता है। इसलिए मेरी इच्छा है कि मैं इस उत्तर में एक से अधिक वोट दे सकता हूं। (ऐसा नहीं है कि आपको SO प्रतिनिधि की आवश्यकता है।) दुर्भाग्यवश, यह उत्तर Google खोजों में आसानी से नहीं आती है। लेकिन एक एसओ खोज में खोजना मुश्किल नहीं है। – Mars

+1

धन्यवाद @ मार्स। और आपने मुझे ऐसा कुछ करने के लिए मिला जो मुझे अक्टूबर में किया जाना चाहिए था: मैंने [डी 3 एपीआई विकी अपडेट किया] https://github.com/mbostock/d3/wiki/Force-Layout#on) इस जानकारी को शामिल करने के लिए, इसलिए भविष्य में इसे ढूंढना आसान होना चाहिए! – AmeliaBR

+0

कूल। (मुझे अभी भी आपका उत्तर यहां बहुत उपयोगी लगता है। मुझे अभी तक पूरी प्रेषण की बात समझ में नहीं आ रही है, यह एक स्पष्टीकरण देखना उपयोगी है जो 'टिक' की परिभाषा को स्पष्ट रूप से संदर्भित करता है जो एक लेता है पैरामीटर।) – Mars

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