python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_matplotlib


文章目录

  • 专栏导读
  • 1、前言
  • 2、subplot()函数
  • 2.1创建一个包含 2x2 的子图布局,并在每个子图中绘制不同的图形
  • 2.2创建一个包含 1x3 的子图布局,并绘制三种不同类型的图形
  • 2.3创建一个包含 2 行 1 列的子图布局,绘制散点图和柱状图
  • 3、subplots()函数
  • 3.1创建一个包含 2 行 2 列的子图布局,并在每个子图中绘制不同类型的图形
  • 3.2创建一个包含 1 行 3 列的子图布局,绘制散点图和柱状图
  • 3.3创建一个包含 2 行 2 列的子图布局,绘制多种不同的图形
  • 4、random函数绘制多种不一样的子图
  • 5、matplotlib相关图书推荐
  • 5.1内容简介
  • 5.2作者简介


1、前言

Matplotlib支持多种绘制多图的方法,其中最常用的是subplot和subplots函数。subplot函数可以将一个图像分成若干个小区域,并在其中绘制子图,而subplots函数可以一次性创建多个子图,并返回一个包含所有子图的数组对象。在绘制多图时,我们可以通过调整子图的排列方式、大小、间距等参数来满足不同的需求,从而使得图像更加美观、直观、易于理解。

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_matplotlib_02

2、subplot()函数

subplot 函数是 Matplotlib 库中用于创建子图的函数。它允许在一个图形窗口中创建多个子图,并指定子图的布局。

subplot 函数的语法如下:

subplot(nrows, ncols, index, **kwargs)

参数说明:

  • nrows:表示子图布局的行数。
  • ncols:表示子图布局的列数。
  • index:表示当前子图在布局中的索引。索引从左上角开始,从左到右,从上到下递增。可以使用整数或元组 (row, col, index) 来指定索引。
  • **kwargs:可选参数,用于设置子图的其他属性。

2.1创建一个包含 2x2 的子图布局,并在每个子图中绘制不同的图形

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)

# 创建子图布局
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title('Sin(x)')

plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title('Cos(x)')

plt.subplot(2, 2, 3)
plt.plot(x, y3)
plt.title('Tan(x)')

plt.subplot(2, 2, 4)
plt.plot(x, y4)
plt.title('Exp(x)')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_子图_03

我们创建了一个 2x2 的子图布局,共有四个子图。在每个子图中,我们使用 subplot 函数指定子图的位置,然后分别绘制了不同的图形。

2.2创建一个包含 1x3 的子图布局,并绘制三种不同类型的图形

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(-x)
y3 = np.log(x)

# 创建子图布局
plt.subplot(1, 3, 1)
plt.plot(x, y1)
plt.title('Sin(x)')

plt.subplot(1, 3, 2)
plt.plot(x, y2)
plt.title('Exp(-x)')

plt.subplot(1, 3, 3)
plt.plot(x, y3)
plt.title('Log(x)')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_matplotlib_04

2.3创建一个包含 2 行 1 列的子图布局,绘制散点图和柱状图

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
np.random.seed(0)
x = np.arange(1, 11)
y1 = np.random.randint(1, 10, size=10)
y2 = np.random.randint(1, 10, size=10)

# 创建子图布局
plt.subplot(2, 1, 1)
plt.scatter(x, y1, color='r')
plt.title('Scatter Plot')

plt.subplot(2, 1, 2)
plt.bar(x, y2, color='b')
plt.title('Bar Plot')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_柱状图_05

我们创建了一个包含 2 行 1 列的子图布局,总共有两个子图。在第一个子图中,我们使用 scatter 函数绘制了散点图,展示了随机生成的点的分布。在第二个子图中,我们使用 bar 函数绘制了柱状图,展示了另一组随机生成的数据。
使用 subplot 函数指定子图的位置和布局,然后在每个子图中绘制了不同类型的图形。最后,使用 tight_layout 函数调整子图之间的间距,并通过 show 函数显示图形。

3、subplots()函数

subplots 函数是 Matplotlib 库中用于创建多个子图的函数。它可以方便地创建包含多个子图的图形窗口,并提供更灵活的子图布局选项。

subplots 函数的语法如下:

subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, **fig_kw)

参数说明:

  • nrows:表示子图布局的行数,默认为 1。
  • ncols:表示子图布局的列数,默认为 1。
  • sharex:设置是否共享 x 轴刻度,默认为 False。
  • sharey:设置是否共享 y 轴刻度,默认为 False。
  • squeeze:设置是否自动压缩子图布局,默认为 True。
  • **fig_kw:可选参数,用于设置图形窗口的其他属性。

3.1创建一个包含 2 行 2 列的子图布局,并在每个子图中绘制不同类型的图形

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)

# 创建子图布局
fig, axs = plt.subplots(2, 2, figsize=(8, 6))

# 子图1
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sin(x)')

# 子图2
axs[0, 1].plot(x, y2)
axs[0, 1].set_title('Cos(x)')

# 子图3
axs[1, 0].plot(x, y3)
axs[1, 0].set_title('Tan(x)')

# 子图4
axs[1, 1].plot(x, y4)
axs[1, 1].set_title('Exp(x)')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_数据_06

我们使用 subplots 函数创建了一个包含 2 行 2 列的子图布局,并返回了一个包含子图对象的数组 axs。在每个子图中,我们通过索引 axs[row, col] 访问子图对象,并在每个子图中绘制了不同类型的图形。

3.2创建一个包含 1 行 3 列的子图布局,绘制散点图和柱状图

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
np.random.seed(0)
x = np.arange(1, 11)
y1 = np.random.randint(1, 10, size=10)
y2 = np.random.randint(1, 10, size=10)

# 创建子图布局
fig, axs = plt.subplots(1, 3, figsize=(12, 4))

# 子图1 - 散点图
axs[0].scatter(x, y1, color='r')
axs[0].set_title('Scatter Plot')

# 子图2 - 柱状图
axs[1].bar(x, y2, color='b')
axs[1].set_title('Bar Plot')

# 子图3 - 折线图
axs[2].plot(x, y1, color='g')
axs[2].plot(x, y2, color='m')
axs[2].set_title('Line Plot')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_柱状图_07

3.3创建一个包含 2 行 2 列的子图布局,绘制多种不同的图形

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
np.random.seed(0)
x = np.linspace(0, 5, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)

# 创建子图布局
fig, axs = plt.subplots(2, 2, figsize=(10, 8))

# 子图1 - 折线图
axs[0, 0].plot(x, y1, color='r')
axs[0, 0].set_title('Sin(x)')

# 子图2 - 散点图
axs[0, 1].scatter(x, y2, color='g')
axs[0, 1].set_title('Cos(x)')

# 子图3 - 柱状图
axs[1, 0].bar(x, y3, color='b')
axs[1, 0].set_title('Tan(x)')

# 子图4 - 面积图
axs[1, 1].fill_between(x, 0, y4, color='m')
axs[1, 1].set_title('Exp(x)')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_子图_08

4、random函数绘制多种不一样的子图

根据 random 函数生成随机数据,我们可以绘制多种不同的子图。下面是一个例子,展示了如何使用 random 函数创建多个子图。

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(0)
x = np.linspace(0, 10, 100)
y1 = np.random.rand(100)
y2 = np.random.randn(100)
y3 = np.random.randint(1, 10, 100)

# 创建子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))

# 子图1
axs[0, 0].plot(x, y1, color='r')
axs[0, 0].set_title('Random Numbers (0-1)')

# 子图2
axs[0, 1].scatter(x, y2, color='g')
axs[0, 1].set_title('Random Numbers (Normal Distribution)')

# 子图3
axs[1, 0].bar(x, y3, color='b')
axs[1, 0].set_title('Random Integers (1-10)')

# 子图4
axs[1, 1].hist(y1, bins=10, color='m')
axs[1, 1].set_title('Histogram of Random Numbers (0-1)')

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

# 显示图形
plt.show()

python matplotlib画多个图每个图添加x轴标签 matplotlib画多个子图_数据_09