2011-06-16 10 views
6

मैं Matplotlib और wxPython का उपयोग करके कुछ डेटा प्रदर्शित करने की कोशिश कर रहा हूं। मुझे एक चित्र मिला है जो चित्रा कैनवास WxAgg में जोड़ा गया है। कैनवास को फिर बॉक्ससॉज़र में जोड़ा जाता है और wx.EXPAND | wx.ALL पर सेट किया जाता है, इसके बदले में बॉक्ससाइज़र SetSizerAndFit द्वारा सेट किया जाता है।चित्रा कैनवास कैसे एक पैनल फिट करने के लिए?

self.figure = Figure(None, dpi = 75) 
self.displaycanvas = FigureCanvas(self, -1, self.figure) 
self.axes = self.figure.add_subplot(111) 
self.axes.imshow(self.data, interpolation="quadric")  

self.mainSizer = wx.BoxSizer() 
self.mainSizer.Add(self.displaycanvas, 1, wx.EXPAND|wx.ALL, 5) 
self.SetSizerAndFit(self.mainSizer) 

यह पैनल तब दूसरे पैनल में जोड़ा जाता है, जहां इसका आकार अन्य पैनलों के सापेक्ष निर्धारित होता है। जब मैं पैनल के बाहरी आकार के साथ खुश हूँ, मैं आंकड़ा पैनल फिट करने के लिए नहीं मिल सकता है:

enter image description here

सभी पंजों से बड़े पैनल पैनल फिट करने के लिए बढ़ाया जाना चाहिए, जबकि अपने पहलू अनुपात को बनाए रखना।

तो मुझे आश्चर्य है, क्यों आंकड़ा पैनल में फिट नहीं होगा?

उत्तर

6

add_subplot विधि से अपनी अक्ष प्राप्त करने के बजाय, आप स्पष्ट सीमाओं के साथ एक अक्ष वस्तु बना सकते हैं। तो

self.axes = self.figure.add_subplot(111) 

उपयोग

self.axes = self.figure.add_axes([0,0,1,1]) 

के बजाय चार नंबर आंकड़ा चौड़ाई और ऊंचाई के भागों में बाएँ किनारे, निचले किनारे, चौड़ाई और ऊंचाई कुल्हाड़ियों के हैं। [0,0,1,1] पूरे आंकड़े को फिट करने के लिए छवि का विस्तार करेगा। बेशक, पहलू अनुपात के साथ अभी भी मुद्दे हैं। यदि आप अपनी छवि के पहलू अनुपात को बनाए रखना चाहते हैं, तो यह हमेशा संपूर्ण विजेट स्थान (विजेट के आकार के आधार पर) भर नहीं पाएगा। पहलू अनुपात परिवर्तन ठीक हैं, तो आप इस

self.axes.imshow(self.data, interpolation="quadric", aspect='auto') 

जो छवि विजेट को भरने, कोई बात नहीं क्या आकार कर देगा की तरह im_show कॉल कर सकते हैं।

enter image description here

+1

बहुत बढ़िया @Stephen, मैं इन 'छोटे' वाली त्रुटियों को समझने वे वास्तव में क्या कर के बिना प्रतिलिपि चिपकाने उदाहरणों में से परिणाम हैं में प्रदर्शन जारी रहे:

स्वत: पहलू अनुपात के बिना इस का परिणाम है। –

+0

ओह और मैंने सबप्लॉट को हर जगह अक्षों में बदल दिया है, जो सबकुछ बेहतर दिखता है। मुझे बदलने की जरूरत है ग्रे ग्रे पृष्ठभूमि पैनल के पृष्ठभूमि रंग का उपयोग करें। –

+1

आप इसे अपने 'चित्रा' उदाहरण के 'set_facecolor()' विधि के साथ सेट कर सकते हैं। –

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