Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python plt.figure.figure.show()在不以交互方式执行时不执行任何操作_Python_Matplotlib_Ipython_Jupyter Notebook - Fatal编程技术网

Python plt.figure.figure.show()在不以交互方式执行时不执行任何操作

Python plt.figure.figure.show()在不以交互方式执行时不执行任何操作,python,matplotlib,ipython,jupyter-notebook,Python,Matplotlib,Ipython,Jupyter Notebook,因此,我将以下简单代码保存在.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(),一切都很好。但假设

因此,我将以下简单代码保存在.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(),一切都很好。但假设我有两个图,图1和图2,两个图中都有东西,我只想显示其中一个,我怎么能做到呢?plt.show()同时绘制它们

抱歉,如果这是愚蠢的,我只是好奇为什么在ipython中交互工作时,调用fig1.show()时会弹出窗口,但当我在shell中执行相同的脚本时却什么也没有发生:python myfile.py


谢谢大家!

您需要像这样修改代码:

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.pyplot作为plt
myfig=plt.图(figsize=(5,5))
ax1=myfig.add_子批次(1,1,1)

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

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

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()

你需要再加一行

%matplotlib inline
在jupyter笔记本中获取情节。
有关更多信息,请参考

考虑到我可能有多个图形,每个图形上有不同的图形,是否可以只显示其中一个?如果我不是以交互方式工作,为什么myfig.show()不能给我任何东西?
%matplotlib inline