2013-01-31 145 views
5

我有一个问题,不知道它的困难与否,但我试图谷歌的答案。没什么值得的。隐藏/隐形Matplotlib图

我的身材是全局的,可以在所有线程中进行访问。

,但它出现在节目的开始,

我想隐藏或使得它在脚本的起始无形然后在代码中的一个点使其可用或可见。

是否有任何Matplotlib像上可见的伪什么

我用这个:

plt.ion() 

fig = plt.figure(visible=False) 

ax =fig.add_subplot(111) 

在此先感谢

回答

1

理想的情况下,避免在脚本中使用plt.ion()。它仅用于交互式会话,您希望立即查看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

如果你想隐藏整个绘图窗口,和你使用的是TK后端 - 您可以使用从顶层()小部件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

没有人在这里询问过Tkinter。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest当然,但这确实完成了工作。为什么不这样做? – Tjaart

+0

这是一个非常后端的特定解决方案,由于tk后端不是标准后端,答案至少需要提及这一事实。此外,这是相当矫枉过正的,因为你可以简单地使用'fig.set_visible(False)'(见[这个答案](http://stackoverflow.com/a/32576093/4124317))。 – ImportanceOfBeingErnest

0

有一个nice answer如何在this 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()