如何切换matplotlib数字的可见性?

时间:2015-02-11 20:05:56

标签: python matplotlib

有没有办法可以让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()

我尝试这样做的原因是因为我在图上运行了一堆图表/动画,显示正在运行的模拟的输出,但是一直显示它们会使我的计算机变慢。 有什么想法吗?

3 个答案:

答案 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_visibleget_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()

将再次显示。