有没有办法可以让matplotlib图形消失并重新出现以响应某些事件? (即按键)
我尝试过使用fig.set_visible(False)
,但似乎对我没有任何帮助。
简单的代码示例:
import matplotlib
import matplotlib.pyplot as plt
fig=matplotlib.pyplot.figure(figsize=(10, 10))
# Some other code will go here
def toggle_plot():
# This function is called by a keypress to hide/show the figure
fig.set_visible(not fig.get_visible()) # This doesn't work for me
plt.show()
我尝试这样做的原因是因为我在图上运行了一堆图表/动画,显示正在运行的模拟的输出,但是一直显示它们会使我的计算机变慢。 有什么想法吗?
答案 0 :(得分:3)
您必须调用plt.draw()
来实际实例化任何更改。这应该有效:
def toggle_plot():
# This function is called by a keypress to hide/show the figure
fig.set_visible(not fig.get_visible())
plt.draw()
答案 1 :(得分:0)
matplotlib库中有一个small guide to image toggling。我可以使用set_visible
和get_visible()
,如示例所示。 matplotlib库示例中的调用位于AxesImage
实例上,而不是Figure
实例,如示例代码中所示。这就是为什么它不适合你的原因。
答案 2 :(得分:0)
您可以使用tkinter库中的Toplevel()小部件和matplotlib后端。
以下是一个完整的例子:
from tkinter import *
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
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().grid()
canvas.show()
import pdb; pdb.set_trace()
通话:
graph.withdraw()
将隐藏情节,并且:
graph.deiconify()
将再次显示。