gpt4 book ai didi

python - plt.figure.Figure.show() 在不交互执行时不执行任何操作

转载 作者:行者123 更新时间:2023-12-01 01:44:16 25 4
gpt4 key购买 nike

所以我将以下简单代码保存在 .py 文件中,并在 shell 中执行:

import matplotlib.pyplot as plt

myfig = plt.figure(figsize=(5, 5))
ax1 = myfig.add_subplot(1, 1, 1)
myfig.show()

但是它在执行时什么也不做,没有错误。

然后,当我在 shell 中启动 Ipython 并输入完全相同的代码时,它确实会弹出一个空窗口。这是为什么?

当然我可以使用 plt.show() ,一切都很好。但是假设我有两个图,fig1 和Fig2,两个图都有东西,而我只想显示其中一个,我该怎么做呢? plt.show() 绘制它们。

抱歉,如果这很愚蠢,我只是好奇为什么在 ipython 中交互工作时,调用 Fig1.show() 时会弹出窗口,但当我在 shell 中执行相同的脚本但执行以下操作时没有任何反应: python myfile.py

谢谢!

最佳答案

plt.show 启动事件循环,创建交互式窗口并显示其中的所有当前图形。如果您的图形比当前 pyplot 状态中实际想要显示的图形多,您可以在调用 plt.show() 之前关闭所有不需要的图形。

fig1 = plt.figure()
ax1 = fig1.add_subplot(1, 1, 1)
ax1.plot([1,3,4])

fig2 = plt.figure()
ax2 = fig2.add_subplot(1, 1, 1)
ax2.plot([1,2,5])

# close first figure
plt.close(fig1)
# show all active figures (which is now only fig2)
plt.show()

相反,fig.show() 不会启动事件循环。因此,只有在事件循环已经启动的情况下才有意义,例如调用 plt.show() 后。在非交互模式下,这可能发生在事件循环中的事件上。举个例子,当Fig1处于事件状态时,按下键盘上的一个键,下面将显示fig2

import matplotlib.pyplot as plt

fig1 = plt.figure()
ax1 = fig1.add_subplot(1, 1, 1)
ax1.plot([1,3,4])

def show_new_figure(evt=None):
fig2 = plt.figure()
ax2 = fig2.add_subplot(1, 1, 1)
ax2.plot([1,2,5])
fig2.show()

# Upon pressing any key in fig1, show fig2.
fig1.canvas.mpl_connect("key_press_event", show_new_figure)

plt.show()

关于python - plt.figure.Figure.show() 在不交互执行时不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51568030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com