Python plt.figure.figure.show()在不以交互方式执行时不执行任何操作
因此,我将以下简单代码保存在.py文件中,并在shell中执行: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(),一切都很好。但假设
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