2016-04-26 7 views
6

मुझे उसी प्लॉट पर डेटा के कई सेट प्लॉट करने की आवश्यकता है, और मैं matplotlib का उपयोग करता हूं।किंवदंती प्लॉट्स में ऑर्डर पाइथन

कुछ भूखंडों के लिए मैं plt.plot() का उपयोग करता हूं और अन्य के लिए मैं plt.errorbar() का उपयोग करता हूं। लेकिन जब मैं plt.plot() के साथ बनाई गई किंवदंतियों को पहली बार प्रकट करता हूं, इससे कोई फर्क नहीं पड़ता कि मैंने उन्हें किस क्रम में रखा है (और zorder किंवदंती में स्थिति पर कोई प्रभाव नहीं पड़ता है)।

मैं उस आदेश को कैसे दे सकता हूं जो मैं किंवदंती में चाहता हूं, भले ही मैं डेटा प्लॉट करता हूं?

उत्तर

13

ax.get_legend_handles_labels का उपयोग करके पौराणिक हैंडल और लेबल प्राप्त करके आप मैन्युअल रूप से ऑर्डर समायोजित कर सकते हैं, और फिर परिणामी सूचियों को पुन: व्यवस्थित कर सकते हैं, और उन्हें ax.legend पर खिला सकते हैं। इसलिए जैसा:

import matplotlib.pyplot as plt 
import numpy as np 

fig,ax = plt.subplots(1) 

ax.plot(np.arange(5),np.arange(5),'bo-',label='plot1') 
ax.errorbar(np.arange(5),np.arange(1,6),yerr=1,marker='s',color='g',label='errorbar') 
ax.plot(np.arange(5),np.arange(2,7),'ro-',label='plot2') 

handles,labels = ax.get_legend_handles_labels() 

handles = [handles[0], handles[2], handles[1]] 
labels = [labels[0], labels[2], labels[1]] 

ax.legend(handles,labels,loc=2) 
plt.show() 

enter image description here

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