2013-01-31 146 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()