दिलचस्प पोस्ट
विशिष्ट एक्सटेंशन के साथ सभी फाइलों को ढूंढने और बदलने के लिए PowerShell स्क्रिप्ट मैं एक बटन जैसा एक HTML लिंक कैसे बना सकता हूं? पीडीएफ प्रारूप में एएसपी.नेट एमवीसी व्यू को कैसे रेंडर करें आईफ़ोन – सबसे अधिक देखने नियंत्रक को कैसे खोजें क्या हम रीडायरेक्ट टीओएक्शन में पैरामीटर के रूप में मॉडल पारित कर सकते हैं? अवैध ब्लॉकस्केस अपवाद जब एईएस के साथ एक स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करने का प्रयास करता है क्या आप अजगर में क्लास को इन्स्तांत करने के लिए स्ट्रिंग का उपयोग कर सकते हैं? Utf8_general_ci और utf8_unicode_ci के बीच अंतर क्या है Numpy / scipy में blas / lapack लिंकिंग को कैसे जांचें? सी # में फिर से प्रवेशक ताले कैशिंग आवश्यक स्क्रिप्ट्स से RequireJS को रोकें एक्सेल: दो कॉलम और आउटपुट तीसरे मैच … और … प्रत्येक कॉलम में कई उदाहरण हैं वैधता के लिए परीक्षण संकेतक (सी / सी ++) जेवीएम हीप मापदंडों यह देखने के लिए कि क्या यह अभी भी चल रहा है, एक pthread कैसे पूछता है?

मैटप्ललिब के साथ कई सबप्लॉट्स के लिए मैं एक एकल किंवदंती कैसे बना सकता हूं?

मैं एक ही प्रकार की जानकारी की साजिश रच रहा हूं, लेकिन विभिन्न देशों के लिए, मैटलप्लेट के साथ कई सबप्लॉट्स के साथ। अर्थात्, मेरे पास 9 प्लॉट हैं जो 3×3 ग्रिड पर हैं, सभी लाइनों के लिए समान हैं (ज़ाहिर है, प्रत्येक पंक्ति में विभिन्न मान)।

हालांकि, मुझे पता नहीं है कि एक किंवदंती कैसे डालनी है (चूंकि सभी 9 सबप्लॉट्स की समान पंक्तियाँ हैं) इस आंकड़े पर सिर्फ एक बार।

मैं उसको कैसे करू?

वेब के समाधान से एकत्रित समाधान "मैटप्ललिब के साथ कई सबप्लॉट्स के लिए मैं एक एकल किंवदंती कैसे बना सकता हूं?"

figlegend हो सकता है कि आप क्या चाहते हैं: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.figlegend

यहाँ उदाहरण: http://matplotlib.org/examples/pylab_examples/figlegend_demo.html

एक और उदाहरण:

plt.figlegend( lines, labels, loc = 'lower center', ncol=5, labelspacing=0. ) 

या:

 fig.legend( lines, labels, loc = (0.5, 0), ncol=5 ) 

आपको सिर्फ एक बार, अपने लूप के बाहर किंवदंती के लिए पूछना होगा।

उदाहरण के लिए, इस मामले में मेरे पास 4 सबप्लॉट हैं, उसी पंक्तियों के साथ, और एक एकल कथा।

 from matplotlib.pyplot import * ficheiros = ['120318.nc', '120319.nc', '120320.nc', '120321.nc'] fig = figure() fig.suptitle('concentration profile analysis') for a in range(len(ficheiros)): # dados is here defined level = dados.variables['level'][:] ax = fig.add_subplot(2,2,a+1) xticks(range(8), ['0h','3h','6h','9h','12h','15h','18h','21h']) ax.set_xlabel('time (hours)') ax.set_ylabel('CONC ($\mu g. m^{-3}$)') for index in range(len(level)): conc = dados.variables['CONC'][4:12,index] * 1e9 ax.plot(conc,label=str(level[index])+'m') dados.close() ax.legend(bbox_to_anchor=(1.05, 0), loc='lower left', borderaxespad=0.) # it will place the legend on the outer right-hand side of the last axes show() 

कई अक्षों के साथ एक figure में एक लीजेंड की स्वचालित पोजिशनिंग के लिए, जैसे कि subplots() प्राप्त होते subplots() , निम्न समाधान वास्तव में अच्छी तरह से काम करता है:

 plt.legend( lines, labels, loc = 'lower center', bbox_to_anchor = (0,-0.1,1,1), bbox_transform = plt.gcf().transFigure ) 

bbox_to_anchor और bbox_transform=plt.gcf().transFigure आप अपने figure के आकार के एक नए bounding बॉक्स को परिभाषित कर रहे हैं के लिए एक संदर्भ के रूप में। (0,-0.1,1,1) का इस्तेमाल करना अन्य कलाकारों पर रखा जाने वाला किंवदंति को रोकने के लिए इस बोउडिंग बॉक्स को नीचे से नीचे ले जाता है

ओबीएस: इस समाधान का उपयोग करें आप fig.set_size_inches() उपयोग करने के बाद और इससे पहले कि आप fig.tight_layout() उपयोग करें

एक अच्छा समारोह get_legend_handles_labels() भी है जो आप अंतिम अक्ष (यदि आप उन पर पुनरावृत्त हो) पर कॉल कर सकते हैं जो आपको label= आर्गुमेंट से लेकर सब कुछ इकट्ठा करेगा:

 handles, labels = ax.get_legend_handles_labels() fig.legend(handles, labels, loc='upper center')