2013-01-31 14 views
5

मेरे पास एक प्रश्न है, यह सुनिश्चित नहीं है कि यह मुश्किल है या नहीं, लेकिन मैंने जवाब देने का प्रयास किया। कुछ भी योग्य नहीं है।छुपाएं/अदृश्य Matplotlib चित्र

मुझे वैश्विक के रूप में चित्रित किया गया है, जिसे सभी धागे में उपयोग किया जा सकता है।

लेकिन यह कार्यक्रम की शुरुआत में प्रकट होता है,

मैं को छिपाने या तो कोड में एक बिंदु पर स्क्रिप्ट की शुरुआत में अदृश्य करना चाहते हैं यह उपलब्ध है या सामने प्रस्तुत करें। अग्रिम

उत्तर

1

में

plt.ion() 

fig = plt.figure(visible=False) 

ax =fig.add_subplot(111) 

धन्यवाद आदर्श रूप में, लिपियों में plt.ion() उपयोग करने से बचें:

दिखाई झूठी जैसे किसी भी matplotlib या कुछ

है मैं इस का उपयोग है। इसका उपयोग केवल इंटरैक्टिव सत्रों में किया जाना है, जहां आप तुरंत matplotlib कमांड का परिणाम देखना चाहते हैं।

एक स्क्रिप्ट में, ड्राइंग आमतौर पर plt.show जब तक देरी हो रही है कहा जाता है:

import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 

ax.plot(range(5)) 

plt.show() # now the figure is shown 
+0

धन्यवाद मैं दूर में इसे हल है कि मैं एक ध्वज है, से केवल पहली बार के लिए यह प्रारंभ लेकिन अगर मैं आयन का उपयोग नहीं करते, मुझे नहीं किसी भी देखना छवि – Hasan

1

मैं एक ही बात यह है कि आप के लिए पूछ रहे हैं क्या करना है, लेकिन मैं इस का उपयोग कर एक कैनवास पर आंकड़ा डाल प्रक्रिया (नोट: इस matplotlib, pyplot का उपयोग करता है, और wxPython):

#Define import and simplify how things are called 
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
import matplotlib.pyplot as plt 

#Make a panel 
panel = wx.Panel(self) 

#Make a figure 
self.figure = plt.figure("Name") 
#The "Name" is not necessary, but can be useful if you have lots of plots 

#Make a canvas 
self.canvas = FigureCanvas(panel, -1, self.figure) 

#Then use 
self.canvas.Show(True) 
#or 
self.canvas.Show(False) 

#You can also check the state of the canvas using (probably with an if statement) 
self.canvas.IsShown() 
0

मामले में आप पूरे भूखंड खिड़की छिपाना चाहते हैं, और आप टी बैकएंड उपयोग कर रहे हैं - आप से उच्चस्तरीय() विजेट का उपयोग कर सकते हैं tkinter पुस्तकालय।

from tkinter import * 
import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg 

fig,(ax) = plt.subplots() 
x = np.linspace(0, 2 * np.pi) 
y = np.transpose([np.sin(x)]) 
ax.plot(y) 

graph = Toplevel() 
canvas = FigureCanvasTkAgg(fig, master=graph) 
canvas.get_tk_widget().pack() 
canvas.show() 

toolbar = NavigationToolbar2TkAgg(canvas, graph) 
toolbar.update() 

कॉलिंग::

graph.withdraw() 

साजिश खिड़की को छिपाने जाएगा, और:

graph.deiconify() 

इसे फिर से प्रदर्शित करेगा

यहाँ एक पूर्ण उदाहरण है।

+0

पर परिवर्तनों ने यहां टिंकर के बारे में कोई भी नहीं पूछा। – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest बेशक, लेकिन यह काम पूरा हो जाता है। ऐसा क्यों नहीं किया जाना चाहिए? – Tjaart

+0

यह एक बहुत ही बैकएंड विशिष्ट समाधान है, और चूंकि टीके बैकएंड मानक बैकएंड नहीं है, इसलिए उत्तर को कम से कम इस तथ्य का जिक्र करने की आवश्यकता है। इसके अतिरिक्त, यह बहुत अधिक है, क्योंकि आप बस 'fig.set_visible (झूठा)' का उपयोग कर सकते हैं (जैसा कि [इस उत्तर में देखा गया है) (http://stackoverflow.com/a/32576093/4124317))। – ImportanceOfBeingErnest

0

nice answerthis question में एक पूर्ण matplotlib आकृति की दृश्यता टॉगल करने के लिए कैसे है। विचार इस चित्र की .set_visible विधि का उपयोग करना है।

यहां एक संपूर्ण उदाहरण:

import matplotlib.pyplot as plt 

plt.scatter([1,2,3], [2,3,1], s=40) 

def toggle_plot(event): 
    # This function is called by a keypress to hide/show the figure 
    plt.gcf().set_visible(not plt.gcf().get_visible()) 
    plt.draw() 

cid = plt.gcf().canvas.mpl_connect("key_press_event", toggle_plot) 

plt.show()