Matplotlib 绘制多图

简介: Matplotlib 绘制多图

我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。

subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。

subplot
subplot(nrows, ncols, index, kwargs)
subplot(pos,
kwargs)
subplot(**kwargs)
subplot(ax)
以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1...N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

设置 numRows = 1,numCols = 2,就是将图表绘制成 1x2 的图片区域, 对应的坐标为:

(1, 1), (1, 2)
plotNum = 1, 表示的坐标为(1, 1), 即第一行第一列的子图。

plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。

实例
import matplotlib.pyplot as plt
import numpy as np

plot 1:

xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")

plot 2:

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("RUNOOB subplot Test")
plt.show()
显示结果如下:

设置 numRows = 2,numCols = 2,就是将图表绘制成 2x2 的图片区域, 对应的坐标为:

(1, 1), (1, 2)
(2, 1), (2, 2)
plotNum = 1, 表示的坐标为(1, 1), 即第一行第一列的子图。

plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。

plotNum = 3, 表示的坐标为(2, 1), 即第二行第一列的子图。

plotNum = 4, 表示的坐标为(2, 2), 即第二行第二列的子图。

实例
import matplotlib.pyplot as plt
import numpy as np

plot 1:

x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")

plot 2:

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

plot 3:

x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")

plot 4:

x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")

plt.suptitle("RUNOOB subplot Test")
plt.show()
显示结果如下:

subplots()
subplots() 方法语法格式如下:

matplotlib.pyplot.subplots(nrows=1, ncols=1, , sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)参数说明:
nrows:默认为 1,设置图表的行数。
ncols:默认为 1,设置图表的列数。
sharex、sharey:设置 x、y 轴是否共享属性,默认为 false,可设置为 'none'、'all'、'row' 或 'col'。 False 或 none 每个子图的 x 轴或 y 轴都是独立的,True 或 'all':所有子图共享 x 轴或 y 轴,'row' 设置每个子图行共享一个 x 轴或 y 轴,'col':设置每个子图列共享一个 x 轴或 y 轴。
squeeze:布尔值,默认为 True,表示额外的维度从返回的 Axes(轴)对象中挤出,对于 N
1 或 1N 个子图,返回一个 1 维数组,对于 NM,N>1 和 M>1 返回一个 2 维数组。如果设置为 False,则不进行挤压操作,返回一个元素为 Axes 实例的2维数组,即使它最终是1x1。
subplot_kw:可选,字典类型。把字典的关键字传递给 add_subplot() 来创建每个子图。
gridspec_kw:可选,字典类型。把字典的关键字传递给 GridSpec 构造函数创建子图放在网格里(grid)。
**fig_kw:把详细的关键字参数传给 figure() 函数。
实例
import matplotlib.pyplot as plt
import numpy as np

创建一些测试数据 -- 图1

x = np.linspace(0, 2np.pi, 400)
y = np.sin(x*
2)

创建一个画像和子图 -- 图2

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

创建两个子图 -- 图3

f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)

创建四个子图 -- 图4

fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

共享 x 轴

plt.subplots(2, 2, sharex='col')

共享 y 轴

plt.subplots(2, 2, sharey='row')

共享 x 轴和 y 轴

plt.subplots(2, 2, sharex='all', sharey='all')

这个也是共享 x 轴和 y 轴

plt.subplots(2, 2, sharex=True, sharey=True)

创建标识为 10 的图,已经存在的则删除

fig, ax = plt.subplots(num=10, clear=True)

plt.show()
部分图表显示结果如下:

图1

图2

图3

图4

目录
相关文章
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘制多图 1
这段代码介绍了如何使用 Matplotlib 库中的 `subplot()` 方法在同一画布上绘制多个子图。通过指定行数(`nrows`)、列数(`ncols`)以及子图的位置序号(`index`),可以在一个整体图像中布局多个独立的图表。例如,`subplot(1, 2, 1)` 和 `subplot(1, 2, 2)` 分别指定了在一个 1 行 2 列的网格中的第一个和第二个位置。示例展示了如何创建两个子图,并分别为它们添加标题。
19 4
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 4
自定义绘图中的线样式,包括线型、颜色和大小等属性。通过使用`color`参数,您可以轻松设置线条颜色,支持多种预设颜色及自定义颜色(如 SeaGreen 或 #8FBC8F)。示例代码展示了如何绘制指定颜色的线条。
41 10
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 7
通过在`plot()`方法中添加多对x,y值,可以实现多条线的同时绘制。示例代码展示了如何使用Matplotlib和NumPy库绘制并展示两条不同样式的线。
24 6
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 5
自定义绘图线样式,包括线型、颜色和粗细等属性。通过 `color` 或 `c` 参数可设定线的颜色,支持多种颜色标记(如 'r' 表示红色)及自定义颜色(如 'SeaGreen')。示例展示了如何应用自定义颜色绘制图形。
31 6
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 6
使用 Matplotlib 自定义绘图线样式,包括线的类型、颜色和大小等属性。通过设置 `linewidth` 参数(可简写为 `lw`)调整线宽,该参数接受浮点数值
38 5
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 2
Matplotlib教程之绘图线篇的第二部分,主要介绍如何自定义绘制线的样式,包括线型、颜色及粗细等属性。重点讲解了使用`linestyle`参数或其简写`ls`来设置不同类型的线条:实线、点虚线、破折线、点划线以及不显示线。并通过一个具体示例展示了如何应用点划线。
30 1
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 3
Matplotlib 中自定义线条样式,包括线条类型、颜色和大小等属性。通过 `color` 参数或其简写 `c`,可以设置线条颜色,支持预设颜色标记(如 'r' 表示红色)及自定义颜色(如 SeaGreen)。示例展示了使用红色线条绘制数组数据的方法。
35 1
|
3月前
|
Python
Matplotlib 教程 之 Matplotlib 绘图线 1
本教程介绍如何使用 Matplotlib 自定义绘图中的线条样式,包括线的类型、颜色和大小等属性。通过设定 `linestyle` 参数,可以轻松实现实线、点虚线、破折线及点划线等多种样式。示例代码展示了如何绘制点虚线。
33 1
|
2月前
|
关系型数据库 Python
Matplotlib 教程 之 Matplotlib 绘制多图 3
`subplot()` 需要手动指定位置,而 `subplots()` 可一次性生成多个子图,通过 `ax` 对象进行调用。`subplots()` 方法支持多种参数,如设置行列数 (`nrows`, `ncols`)、共享轴 (`sharex`, `sharey`) 等。示例展示了不同场景下的子图绘制方法,包括共享轴、极坐标图等。
23 0
|
2月前
|
Python
Matplotlib 教程 之 Matplotlib 绘制多图 2
subplot()` 需要手动指定位置参数,而 `subplots()` 可以一次性生成多个子图,只需调用生成对象的 `ax`。示例代码展示了如何在一个 2x2 的网格中绘制四个不同的子图,并为每个子图设置了标题,最后还添加了一个总标题 "Baidu subplot Test"。
19 0