matplotlib subplots
简介
Matplotlib是一个用于绘制图形的Python库,提供了丰富的绘图功能。其中,subplots函数是Matplotlib中的一个重要函数,它可以将多个子图画在一个图中,方便我们进行多图展示和比较。
subplots函数的用法
Matplotlib的subplots函数常用于创建一个包含多个子图的图形对象。它的基本用法如下:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows, ncols, **kwargs)
其中,nrows
表示子图的行数,ncols
表示子图的列数。fig
是一个Figure
对象,axes
是一个包含子图的Axes对象的二维数组。
创建基本子图
我们可以使用subplots函数创建不同形状的基本子图。下面是一些示例:
创建2×2子图
fig, axes = plt.subplots(2, 2, figsize=(8, 6))
# 绘制第一个子图
axes[0, 0].plot([1, 2, 3, 4], [1, 4, 9, 16], 'r')
# 绘制第二个子图
axes[0, 1].bar(['A', 'B', 'C', 'D'], [3, 4, 2, 5])
# 绘制第三个子图
axes[1, 0].scatter([1, 2, 3, 4], [1, 4, 9, 16])
# 绘制第四个子图
axes[1, 1].imshow([[1, 2], [3, 4]])
plt.show()
运行以上代码,将会得到一个包含4个子图的图形。
创建1×3子图
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
# 绘制第一个子图
axes[0].plot([1, 2, 3, 4], [1, 4, 9, 16], 'r')
# 绘制第二个子图
axes[1].bar(['A', 'B', 'C', 'D'], [3, 4, 2, 5])
# 绘制第三个子图
axes[2].scatter([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
运行以上代码,将会得到一个包含3个子图的图形。
设置子图间距和边距
在创建子图时,我们可以通过调整subplots
函数的subplot_kw
参数来设置子图的间距和边距。
设置子图间距
fig, axes = plt.subplots(2, 2, figsize=(8, 6), subplot_kw={'hspace': 0.3, 'wspace': 0.2})
上述代码中,通过subplot_kw
参数设置了子图的垂直间距hspace
为0.3,水平间距wspace
为0.2,再进行绘制操作即可。
设置边距
fig, axes = plt.subplots(2, 2, figsize=(8, 6), subplot_kw={'top': 0.9, 'bottom': 0.1, 'left': 0.1, 'right': 0.9})
上述代码中,通过subplot_kw
参数设置了子图的四个边距top
、bottom
、left
、right
的取值范围为0到1之间。
子图的属性设置
除了创建子图,我们还可以对子图的属性进行设置,如子图的标题、坐标轴标签、刻度等。以下是一些常见的子图属性设置:
设置标题
axes[0, 0].set_title('Line Plot')
axes[0, 1].set_title('Bar Chart')
axes[1, 0].set_title('Scatter Plot')
axes[1, 1].set_title('Image Plot')
上述代码分别为四个子图设置了相应的标题。
设置坐标轴标签
axes[0, 0].set_xlabel('x')
axes[0, 0].set_ylabel('y')
上述代码设置了第一个子图的x轴和y轴的标签。
设置刻度
axes[0, 0].set_xticks([0, 1, 2, 3, 4])
axes[0, 0].set_yticks([0, 5, 10, 15, 20])
上述代码设置了第一个子图的x轴和y轴的刻度。
使用多种样式绘制子图
除了可以使用默认的样式绘制子图,我们还可以使用不同的样式进行绘制。Matplotlib提供了丰富的样式库供我们选择,通过plt.style.use()
函数即可应用一个样式。以下是一些常用的样式:
使用默认样式
plt.style.use('default')
使用ggplot样式
plt.style.use('ggplot')
使用dark_background样式
plt.style.use('dark_background')
使用seaborn-white样式
plt.style.use('seaborn-white')
保存子图
Matplotlib还提供了将子图保存为图片的功能。我们可以使用savefig()
函数将子图保存为文件。以下是一个保存子图的示例:
fig.savefig('subplot.png', dpi=300)
以上代码将所有的子图保存为名为subplot.png的图片文件,像素密度为300。
结论
通过Matplotlib的subplots函数,我们可以轻松创建多个子图并进行各种属性设置。这使得我们能够更好地展示和比较数据。除了上述介绍的基本用法外,subplots函数还有许多其他的参数供我们使用,例如调整子图的大小、排列方式等。熟练掌握subplots函数的使用将对我们进行数据可视化非常有帮助。