关于matplotlib的.show()

时间:2018-01-12 13:35:05

标签: python python-3.x matplotlib

我正在使用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()

我认为这两种方式不会做同样的事情,但我不清楚。

有人可以一步一步解释这两种方式吗?

3 个答案:

答案 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])