深入浅出matplotlib -- plt.figure()详解

发布时间:2023-05-21

一、基本介绍

plt.figure()是matplotlib.pyplot中的一种功能强大的函数,常被用来创建新的绘图窗口及其所对应的绘图对象。它是一个最基础的创建图像对象的函数,所有其他的图像绘制函数都需要先创建一个Figure对象再进行操作。它提供了多种参数来控制图像的大小、分辨率、背景颜色、透明度等,能够满足用户的多样化需求。

二、参数介绍

plt.figure()函数提供了多个参数,主要包括:

  1. num: 整数或字符串类型,用于指定图表窗口编号或名称。默认为None,表示创建一个新的图表窗口。
  2. figsize: 元组类型,指定图表窗口大小,单位为英寸。默认为(6.4, 4.8)
  3. dpi: 整数类型,指定绘图对象的分辨率,即每英寸点数。默认为100
  4. facecolor: 字符串类型,指定绘图对象的背景颜色。默认为'w'
  5. edgecolor: 字符串类型,指定绘图对象的边框颜色。默认为'w'
  6. frameon: 布尔类型,表示是否显示绘图对象的边框。默认为True
  7. clear: 布尔类型,表示是否在创建新的绘图窗口前清除之前的图像。默认为False

三、示例代码

import matplotlib.pyplot as plt
# 1. 创建一个新的绘图窗口,编号为1,大小为(8, 6),分辨率为100,背景颜色为'g',边框为黑色,且边框宽度为2
fig1 = plt.figure(num=1, figsize=(8, 6), dpi=100, facecolor='g', edgecolor='k', frameon=True)
# 2. 创建一个新的绘图窗口,编号为2,大小为(10, 8),分辨率为100,背景颜色为'w',边框为白色,且边框不显示
fig2 = plt.figure(num='test', figsize=(10, 8), dpi=100, facecolor='w', edgecolor='w', frameon=False)
# 3. 创建一个新的绘图窗口,编号为3,大小为(6, 4),分辨率为100,背景颜色为'w',边框为白色,且边框宽度为1
fig3 = plt.figure(num=3, figsize=(6, 4), dpi=100, facecolor='w', edgecolor='w', frameon=True)
fig3.patch.set_linewidth(1)
# 4. 在创建新的绘图窗口前清空之前的图像,并设置新的背景颜色
plt.clf()
fig4 = plt.figure(num=4, figsize=(5, 3), dpi=100, facecolor='b', edgecolor='w', frameon=True)

四、应用实例

plt.figure()函数的应用非常广泛,下面将介绍几个比较常见的实例。

1. 绘制多张子图

一般情况下我们需要在一张图中展示多幅子图,这时我们可以通过先创建一张大图,然后在它的基础上绘制多个子图。

import matplotlib.pyplot as plt
fig = plt.figure(num=1, figsize=(8, 6), dpi=100)
# 创建子图1
ax1 = fig.add_subplot(221)
ax1.plot([1,2,3,4],[2,4,6,8])
# 创建子图2
ax2 = fig.add_subplot(222)
ax2.plot([1,2,3,4],[1,3,5,7])
# 创建子图3
ax3 = fig.add_subplot(223)
ax3.plot([1,2,3,4],[2,5,7,8])
# 创建子图4
ax4 = fig.add_subplot(224)
ax4.plot([1,2,3,4],[1,3,5,6])
plt.show()

2. 绘制极轴图

极轴图是一种特殊的图形类型,它是将图像放在一个圆形坐标系上展示,用于绘制径向分布图等。我们可以通过 plt.subplot() 函数创建极轴子图,通过 figsize 参数指定整张图的大小。

import numpy as np
import matplotlib.pyplot as plt
# 绘制极轴图
r = np.arange(0, 1, 0.001)
theta = 2 * np.pi * r
fig = plt.figure(figsize=(6, 6), dpi=100)
ax = fig.add_subplot(111, projection='polar')
ax.plot(theta, r, color='r', linewidth=3)
plt.show()

3. 绘制3D图

plt.figure()函数还可以用来创建3D图像对象。我们可以通过 axes 参数指定所需的子图数量和布局,并可通过 figsize 参数调整整张图像的大小。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 绘制3D图
fig = plt.figure(figsize=(8, 8), dpi=100)
ax = fig.add_subplot(111, projection='3d')
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='rainbow')

4. 绘制带有图例和标题的图表

我们可以通过使用 plt.legend()plt.title() 函数来在图表中添加图例和标题等元素,使图表更加完整。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 6 * np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
fig = plt.figure(figsize=(8, 6), dpi=100)
plt.plot(x, y1, label='sin')
plt.plot(x, y2, label='cos')
plt.legend(loc='upper right')
plt.title('Trigonometric Function')
plt.xlabel('x')
plt.ylabel('y')

五、小结

通过本文的介绍,我们了解了 plt.figure() 函数的基本概念和用法,其参数的作用及如何创建多幅子图、极轴图、3D图和带有图例和标题的图表等。希望本文能对读者在日常使用matplotlib时有所帮助。