我正在使用matplotlib来生成一些图形但我不知道这两种显示图像的方式之间的区别。我已经阅读了一些关于它的文档,但我还不明白。
第一种方式:
import matplotlib.pyplot as plt
plt.figure()
plt.plot(x, y)
plt.show()
第二种方式:
import matplotlib.pyplot as plt
graph = plt.figure()
plt.plot(x, y)
graph.show()
我认为这两种方式不会做同样的事情,但我不清楚。
有人可以一步一步解释这两种方式吗?
答案 0 :(得分:1)
Simplified,plt.show()
将启动一个事件循环,并为pyplot
状态内活动的每个数字创建一个图形表示。
相比之下,fig.show()
,其中fig
是一个数字实例,只显示此数字。由于它也不会阻止,它(仅)在交互式会话中有用;否则,由于脚本退出,图形将在显示之后直接关闭。
在通常情况下,您会更喜欢plt.show()
。这不会阻止您使用面向对象的接口。因此,建议的创建和显示图形的方法是
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
对于两个窗口,您可以重复绘图,
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot(x1, y1)
fig2, ax2 = plt.subplots()
ax2.plot(x2, y2)
plt.show()
答案 1 :(得分:0)
plt.figure
会将graph = plt.figure()
分配给graph
的对象返回。如果要更改此对象(绘图)的特定特征,则使用此选项,现在可以通过其实例graph
(基于对象的绘图)来引用该对象
你使用它,即如果你想访问图形的轴或标签,子图,......
请参阅https://python4mpia.github.io/plotting/advanced.html了解基于对象的绘图
操纵绘图对象,你必须得到对它的引用(句柄),这是由graph = plt.figure()
完成的(cf 面向对象编程)
答案 2 :(得分:0)
Matplotlib有两种API实现方式。一个是基于对象的(graph.show()
),另一个是程序的(plt.show()
),看起来很像Matlab绘图API。
程序API适用于当前图形和/或轴组。您始终可以使用plt.gcf()
获取当前数字,使用plt.gca()
获取当前轴。
这里和那里的语法偶尔会有一些细微差别。例如,如果要设置x轴限制:
plt.xlim([0, 10])
或
ax = plt.gca()
ax.set_xlim([0, 10])