Python matplotlib在屏幕上生成图形的触发器是什么

Python matplotlib在屏幕上生成图形的触发器是什么,python,matplotlib,Python,Matplotlib,此代码仅生成一个图形,上面有两个绘图 %matplotlib inline import matplotlib.pyplot as plt import numpy as np def squareX(x): return x*x fig,ax=plt.subplots() i=np.arange(5) j=squareX(i) print(i,j) figure0=plt.plot(i,j) #plt.show() #fig,ax=plt.subplots()# if you om

此代码仅生成一个图形,上面有两个绘图

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
def squareX(x):
    return x*x

fig,ax=plt.subplots()
i=np.arange(5)
j=squareX(i)
print(i,j)
figure0=plt.plot(i,j)
#plt.show()

#fig,ax=plt.subplots()# if you omit this then a new plot wont show-you therefore need to show the plot before
x = np.random.rand(10)
y = np.random.rand(10)
figure1 = plt.plot(x,y)
问题1。第一次打电话给

fig,ax=plt.subplots()
返回两个从未使用过的变量。相反,这两个图是使用

figure0 = plt.plot(x,y)

为什么matplotlib决定在第二次调用后同时输出它们?是什么使得对
figure0=plt.plot(x,y)
的第一次调用在结束前不可见

问题2)如果第一个注释行未注释,则matplotlib显示两个数字。我可以理解,在第一次调用
figure0=plt.plot(x,y)
后,
plt.show()
会导致matplotlib绘制图形,但在调用
figure1=plt.plot(x,y)
后,没有调用
plt.show()
,但仍然绘制了图1

问题3)如果第二条注释行未注释,则matplotlib显示两个数字。但是,第二个未注释行似乎几乎不相关,因为它的变量从未使用过


我意识到这是一个非常基本的问题,指的是matplotlib的“工作不足”。如果在某个地方有明确的地址,请原谅,但是似乎有很多关于matplotlib的断开连接的文档。如果你能为像我这样的傻瓜提供一个链接,我将不胜感激。

我想你已经被两个系统的组合所淹没,而这两个系统本身可能更容易理解。系统1是pyplot
plt.subplot()
创建地物。
plt.plot()
要么创建地物,如果没有打开的地物,则其他将使用当前打开的地物。每当调用
show()
时,将显示所有打开的地物。System 2是IPython,或者具体地说是IPykernel内联后端。它将干扰matplotlib,因此在单元格的末尾,它将显示所有pyplot图形,无论您是否自己调用该命令。我不知道有两个系统正在运行。如果我在命令行中键入“python”,然后键入“>>>matplotlib.get_backend()”来运行python解释器,那么我会得到“Qt5Agg”。如果我在jupyter手机(或colab笔记本电脑)上也这样做,我会得到'module://ipykernel.pylab.backend_inline'. 此外,python似乎有一个用于绘图的OO接口(使用fig、ax符号)以及一个使用plt符号的过程接口。这个帖子也把我弄糊涂了。
figure1 = plt.plot(x,y)