matplotlib subplot

matplotlib subplot

参考:Matplotlib Subplot

引言

在数据可视化领域,matplotlib 是一款非常受欢迎的 Python 库。它提供了丰富的绘图工具,能够满足不同需求的数据展示和分析。本文将着重介绍 matplotlib 中的 subplot 功能。subplot 是 matplotlib 中用于将多个子图组合在一起的函数,能够帮助我们在同一个绘图区域内展示多个图形,以便做出更全面的数据分析和对比。

什么是 subplot?

subplot 是 matplotlib 中用于创建多图展示的函数。它可以将整个绘图区域分割成若干个小区域,并在每个小区域内创建图形。通过使用 subplot,我们可以在同一个绘图窗口中展示多个图形,方便地进行对比和分析。

subplot 的基本用法

使用 subplot 函数,首先需要指定绘图区域的布局形式。通过将整个区域分为 m 行 n 列的小区域,我们可以使用 subplot(i, j, k) 的方式来选择其中的第 i 行第 j 列的小区域,并在该区域内创建图形。其中 k 的取值范围为 1 到 m*n。

接下来我们给出一个简单的例子:

import matplotlib.pyplot as plt

# 创建一个2行2列的绘图区域
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.title('Subplot 1')

plt.subplot(2, 2, 2)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'g-')
plt.title('Subplot 2')

plt.subplot(2, 2, 3)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'b--')
plt.title('Subplot 3')

plt.subplot(2, 2, 4)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'y^-')
plt.title('Subplot 4')

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()

以上代码会创建一个 2×2 的绘图区域,并在每个小区域内展示了一个简单的曲线图。subplot(2, 2, 1) 表示选取第一行第一列的小区域,subplot(2, 2, 2) 表示选取第一行第二列的小区域,以此类推。

我们可以注意到,图形标题可以通过 title 函数来添加。通过在每个小区域绘制不同的图形,我们可以在一张图中展示多个相关的数据。

subplot 的更多设置

除了基本的用法之外,subplot 还提供了更多的设置选项,使得图形更加美观和易读。

调整子图之间的间距

在上面的例子中,我们使用了 tight_layout() 函数来调整子图之间的间距。该函数会自动调整各个子图之间的边界,使得图形看起来更加整齐美观。我们可以在绘制所有子图之后加上 tight_layout() 函数来使用它。

调整子图大小

当我们想要调整子图的大小时,可以通过设置 figsize 参数来实现。figsize 参数接受一个二元组,用于设置绘图区域的大小。例如,如果想要将绘图区域的宽度设置为 10 英寸,高度设置为 5 英寸,可以这样调整:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))

plt.subplot(1, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.title('Subplot 1')

plt.subplot(1, 2, 2)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'g-')
plt.title('Subplot 2')

plt.tight_layout()
plt.show()

在上面的例子中,我们将绘图区域的宽度设置为 10 英寸,高度设置为 5 英寸。然后绘制了一个 1×2 的绘图区域。

设置子图之间的距离

使用 subplots_adjust 函数可以进一步调整子图之间的距离。该函数接受一系列参数,用于设置边距大小。例如,我们可以将左、右、上、下侧边距都设置为 0.1:

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

plt.subplot(1, 2, 1)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.title('Subplot 1')

plt.subplot(1, 2, 2)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'g-')
plt.title('Subplot 2')

plt.tight_layout()
plt.show()

在上面的例子中,我们使用了 subplots_adjust 函数来设置左、右、上、下边距。通过调整这些参数,我们可以使得子图之间的距离更加合适。

subplot 中的图形类型

在 subplot 中,可以绘制多种类型的图形,比如线图、柱状图、饼状图等。我们可以在子图内使用不同的函数来创建不同类型的图形。

以下是一个例子,展示了如何在 subplot 中创建多种不同的图形:

import matplotlib.pyplot as plt
import numpy as np

# 创建一个2行2列的绘图区域
plt.subplot(2, 2, 1)
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('Line Plot')

plt.subplot(2, 2, 2)
x = np.arange(3)
y = [10, 5, 8]
colors = ['red', 'green', 'blue']
plt.bar(x, y, color=colors)
plt.title('Bar Plot')

plt.subplot(2, 2, 3)
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
colors = ['red', 'green', 'blue', 'yellow']
explode = (0.1, 0, 0, 0)  # 突出显示第一块
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
plt.axis('equal')
plt.title('Pie Chart')

plt.subplot(2, 2, 4)
x = np.linspace(-np.pi, np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.legend()
plt.title('Multiple Line Plot')

# 调整子图之间的间距
plt.tight_layout()

# 显示图形
plt.show()

以上代码展示了如何在 subplot 中创建线图、柱状图、饼状图和多条曲线图。通过在不同的子图中使用不同的绘图函数,我们可以方便地在同一个图形中对比不同的数据。

总结

通过使用 matplotlib 中的 subplot 功能,我们可以在同一个绘图区域内展示多个图形,方便地进行数据对比和分析。我们可以通过调整子图的布局、大小和间距等参数,使得图形更加美观和易读。同时,在每个子图中使用不同的绘图函数,可以展示不同类型的图形,满足不同的数据展示需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程