首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非交互执行时,plt.figure.Figure.show()不执行任何操作

非交互执行时,plt.figure.Figure.show()不执行任何操作
EN

Stack Overflow用户
提问于 2018-07-28 12:27:40
回答 3查看 5.2K关注 0票数 5

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

代码语言:javascript
运行
复制
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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-28 18:28:38

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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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()
票数 4
EN

Stack Overflow用户

发布于 2018-07-28 12:43:29

你需要像这样修改你的代码:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

myfig = plt.figure(figsize=(5, 5))
ax1 = myfig.add_subplot(1, 1, 1)
plt.plot((1, 2, 3))       # <- plot something
plt.show()                # <- show the plot

更多信息请参见matplotlib docs here

票数 0
EN

Stack Overflow用户

发布于 2018-07-30 19:42:24

您需要添加额外的一行

代码语言:javascript
运行
复制
%matplotlib inline

在jupyter notebook上得到这个图。有关更多信息,请参阅http://ipython.readthedocs.io/en/stable/interactive/tutorial.html#magics-explained

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51568030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档