有没有办法使用键盘关闭OS X中的pyplot数字(据我所知,你只能通过点击窗口关闭按钮来关闭它?)
我尝试了很多键组合,比如command-Q,command-W和类似的组合,但它们似乎都不适用于我的系统。
我也尝试过发布here的代码:
#!/usr/bin/env python
import matplotlib.pyplot as plt
plt.plot(range(10))
def quit_figure(event):
if event.key == 'q':
plt.close(event.canvas.figure)
cid = plt.gcf().canvas.mpl_connect('key_press_event', quit_figure)
plt.show()
但是,上述内容对OS X也不起作用。我尝试将print语句添加到quit_figure,但似乎从未调用过。
我在最新的公共OS X,matplotlib版本1.1.1以及OS X(2.7.3)附带的标准Python上尝试此操作。有想法该怎么解决这个吗?每次必须伸手去抓鼠标都很烦人。
答案 0 :(得分:13)
这绝对是pyplot使用的默认OS X后端中的一个错误。在文件顶部添加以下两行会切换到适合我的不同后端,如果这有助于其他任何人。
import matplotlib
matplotlib.use('TKAgg')
答案 1 :(得分:13)
我通过替换
解决了这个问题plt.show()
与
plt.show(block=False)
input("Hit Enter To Close")
plt.close()
最好的黑客,但我希望能帮助某人
答案 2 :(得分:0)
使用互动模式:
import matplotlib.pyplot as plt
# Enable interactive mode:
plt.ion()
# Make your plot: No need to call plt.show() in interactive mode
plt.plot(range(10))
# Close the active plot:
plt.close()
# Plots can also be closed via plt.close('all') to close all open plots or
# plt.close(figure_name) for named figures.
签出"什么是交互模式?"此documentation
中的部分可以随时使用plt.ioff()
答案 3 :(得分:-2)
当您在matplotlib窗口中有焦点时,官方键盘快捷键是ctrl-W:
http://matplotlib.org/1.2.1/users/navigation_toolbar.html
由于这是一种非常非Mac的方式,它实际上是cmd-W。不容易猜到,是吗?
如果您使用的是交互式shell,则还可以通过编程方式关闭该窗口。参见:
When to use cla(), clf() or close() for clearing a plot in matplotlib?
因此,如果您使用pylab或等效的(同一命名空间中的所有内容),它只是close(fig)
。如果要手动加载库,则需要从正确的命名空间中取close
,例如:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([0,1,2],[0,1,0],'r')
fig.show()
plt.close(fig)
这里唯一的问题是即使有人期待,也没有fig.close
之类的东西。另一方面,您可以使用plt.close('all')
重新获得桌面。