2012-11-18 7 views
13

मैं matplotlib के साथ बनाए गए नेटवर्क प्लॉट में पावर प्रवाह परिणामों को सम्मिलित करने का प्रयास कर रहा हूं। कुछ बसें इतनी नज़दीक हैं कि बिजली प्रवाह के परिणामों के साथ नामों को लेबल करना एक बड़ा सिरदर्द साबित हो रहा है क्योंकि पाठ ओवरलैप कुछ हिस्सों को पढ़ने योग्य नहीं बना रहा है।matplotlib में गैर ओवरलैपिंग टेक्स्ट कैसे सम्मिलित करें?

क्या यह निर्धारित करने के लिए टेक्स्ट के बाउंडिंग बॉक्स का उपयोग करने का कोई तरीका है कि पाठ साजिश रेखाओं और/या किसी अन्य पाठ को ओवरलैप करता है या नहीं?

+0

matplotlib-users मेलिंग सूचियों में एक समान समस्या के बारे में कुछ चर्चा हुई थी। [यहां] देखें (http://matplotlib.1069221.n5.nabble.com/Optimal-positioning-of-text-td10090.html)। – tiago

+0

क्या आपने plt.tight_layout() की कोशिश की है? – Yugi

+0

हमने get_clear() फ़ंक्शन में ऐसा कुछ किया: https://sourceforge.net/p/spacepy/code/ci/master/tree/spacepy/plot/utils.py#l954 –

उत्तर

3

यह इस समस्या का कोई आसान जवाब नहीं है, क्योंकि यह automatic label placement problem का एक उदाहरण है, जो एनपी-हार्ड है (यानी कोई तेज़ एल्गोरिदमिक दृष्टिकोण नहीं है जो इसे हल करने की गारंटी है)। यहां तक ​​कि Google और MovMaps ने भी इसका समाधान नहीं किया है!

संभावित समाधानों में कम महत्वपूर्ण तत्वों के लिए कनेक्शन या लेबल छिपाने, छवियों की एक श्रृंखला को प्रस्तुत करने में शामिल हो सकते हैं जिनमें से प्रत्येक लेबल/कनेक्शन का सबसेट होता है, और विभिन्न ज़ूम स्तरों पर छवियों को प्रस्तुत करता है। visualizing the stock market structure पर Sklearn ट्यूटोरियल लेबल प्लेसमेंट के लिए कुछ सरल ह्युरिस्टिक दृष्टिकोणों के लिए एक अच्छा उदाहरण है।

आप जीआईएस स्टैक एक्सचेंज, as similar questions have been asked there के आसपास भी पोक करना चाह सकते हैं।

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