9

我有一个问题,不确定它是否困难,但我试图用谷歌搜索答案。没有什么值得的。

我有数字作为全局,可以在所有线程中访问。

但它出现在程序的开头,

我想在脚本开始时隐藏或使其不可见,然后在代码中的某一点使其可用或可见。

是否有任何 Matplotlib 像可见的 False 或其他东西

我用这个:

plt.ion()

fig = plt.figure(visible=False)

ax =fig.add_subplot(111)

提前致谢

4

4 回答 4

1

Ideally, avoid using plt.ion() in scripts. It is meant to be used only in interactive sessions, where you want to see the result of matplotlib commands immediately.

In a script, the drawing is usually delayed until plt.show is called:

import matplotlib.pyplot as plt

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

ax.plot(range(5))

plt.show()  # now the figure is shown
于 2013-01-31T15:50:20.487 回答
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()
于 2013-03-02T01:08:38.740 回答
1

在这个问题中有一个很好的答案如何切换完整 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()
于 2017-04-20T13:29:43.173 回答
1

如果您想隐藏整个绘图窗口,并且您正在使用 tk 后端 - 您可以使用 tkinter 库中的 Toplevel() 小部件。

这是一个完整的例子:

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()

将再次显示。

于 2017-04-20T07:52:18.240 回答