python - क्या अजगर के लिए एक इंटरैक्टिव ग्राफिंग लाइब्रेरी है




graph interactive (2)

मैं पाइथन के लिए एक इंटरैक्टिव ग्राफिंग लाइब्रेरी की तलाश में हूं।

" graph " से, मेरा मतलब है कि नोड्स के एक सेट से जुड़े नोड्स का एक सेट (xy अक्ष पर मूल्यों की साजिश नहीं, न ही पिक्सल का ग्रिड)।

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

पायथन द्वारा, मेरा मतलब प्रोग्रामिंग भाषा Python , ग्राफिंग लाइब्रेरी में सीपीथन बाध्यकारी होना चाहिए। मेरे पास पाइथन 2.7 और पायथन 3.1 है, लेकिन यदि आवश्यक हो तो 2.6 तक डाउनग्रेड कर सकते हैं। यह भाषा आवश्यकता इसलिए है क्योंकि जिस डेटासेट के साथ मैं काम कर रहा हूं उसके पास केवल पाइथन बाध्यकारी है।

ग्राफ़िंग लाइब्रेरी को निर्देशित ग्राफ़ का समर्थन करना चाहिए और नोड्स को स्वचालित रूप से लेआउट करने में सक्षम होना चाहिए। मुझे नोड्स पर लेबल डालने की ज़रूरत है।

अधिमानतः, लेआउटिंग एल्गोरिदम एक दूसरे के पास आसन्न नोड्स रखना चाहिए। यह मेरे 4 साल पुराने लैपटॉप में 100-1000 नोड्स और 300-4000 शिखर से काफी हद तक संभालने में सक्षम होना चाहिए (मैं आम तौर पर लगभग 100 नोड्स से शुरू करता हूं, लेकिन उपयोगकर्ता इनपुट के आधार पर संख्या विस्तारित हो सकती है)। अधिमानतः यह एक पुस्तकालय होना चाहिए जिसमें बहुत अधिक निर्भरता नहीं है (शायद जीनोम के अलावा)। ओपन सोर्स को प्राथमिकता दी जाती है।

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


ऐसा लगता है कि नोडबॉक्स आप जो चाहते हैं वह हो सकता है:

http://nodebox.net/code/index.php/Graph मैक ओएसएक्स

http://www.cityinabottle.org/nodebox/ विंडोज़ (ओपनजीएल का उपयोग करके)

ग्राफ़ ऑब्जेक्ट में माउस इंटरैक्शन के लिए कार्यक्षमता भी है, ग्राफ. graph.events ऑब्जेक्ट में बंडल किया गया है। इसमें निम्नलिखित गुण हैं:

  • graph.events.hovered : None या नोड जिस पर माउस hovers।
  • graph.events.pressed : None या नोड जिस पर माउस दबा रहा है।
  • graph.events.dragged : None या नोड खींचा जा रहा है।
  • graph.events.clicked : None या अंतिम नोड क्लिक किया गया।
  • graph.events.popup : जब True , graph.events.popup नोड पर एक पॉपअप विंडो प्रदर्शित करेगा।

गेफी के पार भी आया, ऐसा लगता है कि आपके पास कार्यक्षमता भी हो सकती है।

http://gephi.org/ विंडोज , लिनक्स और मैक ओएसएक्स

गेफी सभी प्रकार के नेटवर्क और जटिल प्रणालियों, गतिशील और पदानुक्रमित ग्राफों के लिए एक इंटरैक्टिव विज़ुअलाइज़ेशन और एक्सप्लोरेशन प्लेटफॉर्म है।


मेरी भी यही समस्या है। अंत में, मुझे लगता है कि नोडबॉक्स ओपनगल चाल चल रहा है। निम्न लिंक पर ग्राफ लाइब्रेरी का उपयोग करने की कोशिश न करें

http://nodebox.net/code/index.php/Graph

नोडबॉक्स opengl के साथ। यह काम नहीं करता है, वह ग्राफ लाइब्रेरी केवल मैक ओएसएक्स नोडबॉक्स के साथ संगत है। लेकिन किसी भी मामले में यह ठीक है क्योंकि आपको इसकी आवश्यकता नहीं है।

उदाहरण के लिए निम्नलिखित प्रश्न देखें:

नोडबॉक्स opnegl में ग्राफ के किनारे पर लेबल जोड़ना

यह उदाहरण कोड दिखाता है जो मेरे लिए काम करता है, कोड को संशोधित किया जा सकता है ताकि नोड पर क्लिक न केवल आपको नोड को स्थानांतरित करने की अनुमति देता है, बल्कि आपको ग्राफ को संशोधित करने की अनुमति देता है।

बस हटाएं

label = "Placeholder"

कोड से और यह काम करता है।

संपादित करें:

मैंने यहां कुछ और विस्तृत उदाहरण कोड डाला है: नोडबॉक्स खुला जीएल ग्राफ, आकार समारोह पहचाना नहीं गया है। (उबंटू)





interactive