2012-10-22 15 views
35

में किसी विशिष्ट क्षेत्र पर एक आयताकार कैसे आकर्षित करें मेरे पास एक ग्राफ है, जो मैटलप्लिब में खींचे गए कुछ डेटा से गणना की गई है। मैं इस ग्राफ के वैश्विक अधिकतम के आसपास एक आयताकार क्षेत्र बनाना चाहता हूं। मैं plt.axhspan, की कोशिश की लेकिन आयत जब मैं फोन plt.show()matplotlib ग्राफ

तो, कैसे एक आयताकार क्षेत्र एक matplotlib ग्राफ पर खींचा जा सकता है प्रकट करने के लिए प्रतीत नहीं होता? धन्यवाद!

उत्तर

45

सबसे संभावित कारण यह है कि आपने axspan को कॉल करते समय एक्स तर्कों के लिए डेटा इकाइयों का उपयोग किया था। the function's docs (मेरे जोर) से:

y coords डेटा इकाइयों में हैं और एक्स coords कुल्हाड़ियों (सापेक्ष 0-1) इकाइयों में हैं।

तो 0 या 0 के दाएं कोने वाले किसी भी आयताकार को आसानी से ऑफ-प्लॉट खींचा जाता है।

आपके अक्ष पर Rectangle जोड़ने के लिए एक आसान विकल्प हो सकता है (उदा।, plt.gca और add_patch के माध्यम से); Rectangle दोनों आयामों के लिए डेटा इकाइयों का उपयोग करता है। निम्नलिखित चौड़ाई & के साथ एक ग्रे आयताकार जोड़ देगा (2,3):

from matplotlib.patches import Rectangle 
someX, someY = 2, 3 
currentAxis = plt.gca() 
currentAxis.add_patch(Rectangle((someX - .5, someY - .5), 1, 1, facecolor="grey")) 
संबंधित मुद्दे