Matplotlib 获取当前图形对象的方法

Matplotlib 获取当前图形对象的方法

在使用Matplotlib绘制图形时,有时需要获取并操作当前正在使用的图形。特别是在使用ipython时,Matplotlib提供的%matplotlib魔法命令使得图形能够直接在代码中更新,如果无法获取到当前图形对象,就无法更新图形。

下面介绍几种获取当前图形对象的方法。

阅读更多:Matplotlib 教程

方法一:使用plt.gcf()

Matplotlib提供了plt.gcf()函数,获取当前正在使用的图形对象。gcf是”get current figure”的缩写。

import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [4, 5, 6])

# 获取当前图形对象
fig = plt.gcf()

print(fig)

输出:

Figure(640x480)

可以看到,我们成功获取了当前正在使用的图形对象。可以使用该对象进行各种操作,例如保存图形、修改标题等。

方法二:使用plt.show(block=False)

当使用plt.show()plt.show(block=True)显示图形时,该函数会阻塞当前的进程。如果没有人为地关闭图形窗口,代码将无法继续向下执行。

因此,一些Matplotlib版本中添加了plt.show(block=False),该函数可以立即返回,并将图形交给事件循环处理。此时,我们就可以立即获取当前图形对象。

import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [4, 5, 6])

# 显示图形,并立即返回
plt.show(block=False)

# 获取当前图形对象
fig = plt.gcf()

print(fig)

输出:

Figure(640x480)

方法三:使用plt.ioff()plt.ion()

在ipython中,我们可以使用%matplotlib魔法命令将Matplotlib图形直接嵌入到ipython中。默认情况下,该命令会开启”interactive mode”,使得图形可以动态更新。

如果要获取当前图形对象,我们可以将”interactive mode”关闭,使用plt.show()显示图形,然后再手动关闭图形窗口。

import matplotlib.pyplot as plt

plt.ioff()
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

# 等待手动关闭图形窗口

# 获取当前图形对象
fig = plt.gcf()

print(fig)

输出:

Figure(640x480)

需要注意的是,关闭”interactive mode”后,图形将不再自动更新,需要手动调用plt.draw()plt.pause()等函数刷新图形。

import matplotlib.pyplot as plt

plt.ioff()
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

# 等待手动关闭图形窗口

# 获取当前图形对象
fig = plt.gcf()
fig.suptitle("New Title")

# 刷新图形
plt.draw()

# 继续更新图形
plt.plot([4, 5, 6], [7, 8, 9])
plt.pause(1)

# 再次刷新图形
plt.draw()

总结

通过上述方法,我们可以获取到当前正在使用的Matplotlib图形对象,从而进行各种操作。需要根据具体情况选择不同的方法,例如在ipython中使用plt.gcf()是最简单的方法,而非ipython环境下,需要使用plt.show(block=False)plt.ioff()plt.ion()来获取当前图形对象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程