1、matplotlib.pyplot.subplot() 介绍
👏
matplotlib.pyplot.subplot()方法用于创建子图布局中的一个子图。
👏matplotlib.pyplot.subplot(*args, **kwargs)
| 参数解释 |
|---|
1. *args:通常接受三个整数参数,分别代表子图的行数、列数和子图的索引。用于指定子图在整个子图布局中的位置。 |
2. **kwargs:可以传递一些关键字参数,用于设置子图的属性,例如 facecolor(设置子图的背景颜色)等。 |
1.1、参数:*args
👏
*args:通常接受三个整数参数,分别代表子图的行数、列数和子图的索引。用于指定子图在整个子图布局中的位置。
以下是一个简单的示例:
import matplotlib.pyplot as plt
# 创建一个绘图窗体,并设置大小为 (3.5, 3)
plt.figure(figsize=(3.5, 3))
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Subplot 1')
plt.subplot(2, 2, 2)
plt.plot([2, 3, 4], [5, 6, 7])
plt.title('Subplot 2')
plt.subplot(2, 2, 3)
plt.plot([3, 4, 5], [6, 7, 8])
plt.title('Subplot 3')
plt.subplot(2, 2, 4)
plt.plot([4, 5, 6], [7, 8, 9])
plt.title('Subplot 4')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122601.png'
, dpi=300
, bbox_inches='tight')
plt.show()
在这个例子中,subplot(2, 2, 1) 表示创建一个 2 行 2 列的子图布局,当前操作的是第一个子图。

1.2、参数:**kwargs
👏**kwargs 可以传递一些关键字参数,用于设置子图的属性,例如
facecolor(设置子图的背景颜色)等。
以下是一个设置子图背景颜色的示例:
import matplotlib.pyplot as plt
# 创建一个绘图窗体,并设置大小为 (3.5, 3)
plt.figure(figsize=(3.5, 3))
plt.subplot(
111
, facecolor='yellow'
)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Subplot with yellow background')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122602.png'
, dpi=300
, bbox_inches='tight')
plt.show()
在这个例子中,通过 facecolor='yellow' 将子图的背景颜色设置为黄色。

2、matplotlib.pyplot.subplot() 调用方式
matplotlib.pyplot.subplot() 调用方式主要有一下几种:
subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
以下是对 matplotlib.pyplot.subplot 不同调用方式的作用和区别:
subplot(nrows, ncols, index, **kwargs)
-
作用: 用于创建一个子图,指定子图在一个网格中的位置。
- 解释:
-
nrows表示整个子图网格的行数。 -
ncols表示整个子图网格的列数。 -
index表示当前子图在网格中的位置索引,从1开始计数,按照从左到右、从上到下的顺序。 -
**kwargs可以传递一些额外的参数来配置子图,比如设置坐标轴标签、标题等。
-
subplot(pos, **kwargs)
-
作用: 与第一种方式类似,也是创建一个子图。
- 解释:
-
pos是一个三位整数,格式为nrows*100 + ncols*10 + index。例如,在一个2行2列的布局中,第一个子图可以用subplot(221)来创建,等同于subplot(2, 2, 1)。这种方式更加简洁,但可读性可能稍差一些。
-
subplot(**kwargs)
-
作用: 不太常用的调用方式,通常在一些特殊情况下使用。
-
解释: 一般来说,如果没有明确指定子图的位置信息,这种方式可能会依赖于之前的子图布局状态或者一些默认的设置来创建子图。具体的行为可能不太容易预测,使用时需要谨慎。
subplot(ax)
-
作用: 将当前的绘图操作指向一个已经存在的
Axes对象。 - 解释:
-
ax是一个已经创建好的matplotlib.axes.Axes对象。这种方式不是创建新的子图,而是复用现有的Axes对象进行绘图操作。可以用于在特定的子图上进行进一步的绘图或者修改已有子图的属性。
-
👏总体来说,前两种方式是最常用的创建子图的方法,根据具体需求选择合适的方式来指定子图在网格中的位置。后两种方式相对较少使用,需要根据特定的场景和需求来决定是否采用。
2.1、:subplot(nrows, ncols, index, **kwargs)
import matplotlib.pyplot as plt
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Subplot 1')
plt.subplot(2, 2, 2)
plt.scatter([1, 2, 3], [7, 8, 9])
plt.title('Subplot 2')
plt.subplot(2, 2, 3)
plt.bar([1, 2, 3], [10, 11, 12])
plt.title('Subplot 3')
plt.subplot(2, 2, 4)
plt.pie([1, 2, 3])
plt.title('Subplot 4')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122603.png'
, dpi=300
, bbox_inches='tight')
# 调整子图间隔
plt.subplots_adjust(wspace=0.2, hspace=0.4)
plt.show()

2.2、:subplot(pos, **kwargs)
import matplotlib.pyplot as plt
plt.subplot(221)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Subplot 1')
plt.subplot(222)
plt.scatter([1, 2, 3], [7, 8, 9])
plt.title('Subplot 2')
plt.subplot(223)
plt.bar([1, 2, 3], [10, 11, 12])
plt.title('Subplot 3')
plt.subplot(224)
plt.pie([1, 2, 3])
plt.title('Subplot 4')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122604.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

2.3、:subplot(**kwargs)
import matplotlib.pyplot as plt
import numpy as np
# 使用 subplot(**kwargs),这里假设根据全局参数来创建子图
plt.subplot(
aspect='equal' # 设置子图的纵横比为相等
, facecolor='lightgray' # 设置子图的背景颜色为浅灰色
)
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('Sine Wave')
plt.show()

2.4、:subplot(ax)
假设之前已经有一些子图布局,现在想在特定的子图上进行一些操作,可能会用到这种方式。比如假设已经有一个 2x2 的子图布局,现在想在第 3 个子图上添加一些内容:
import matplotlib.pyplot as plt
# 创建一个3x3的网格布局,并选择第3个位置的子图
ax3 = plt.subplot(2, 2, 3)
# 在这个子图上绘图
ax3.plot([1, 2, 3], [4, 5, 6])
ax3.set_title('3x3 Grid, 5th Subplot')
ax1 = plt.subplot(2, 2, 4)
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122605.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3、matplotlib.pyplot.subplot() 常用
| 参数解释 |
|---|
1. *args:通常接受三种形式的参数,用于指定子图在整个子图布局中的位置。可以是三个整数(nrows, ncols, index),表示在 nrows 行和 ncols 列的网格中,子图占据索引为 index 的位置,索引从 1 开始,从左上角向右递增;也可以是一个 3 位数整数,其各位数字分别被解释为三个单一位整数,效果与第一种形式相同,但仅在子图数量不超过 9 个时可用;还可以是一个 SubplotSpec 对象。默认值为 (1, 1, 1)。 |
2. projection:指定子图的投影类型,可以是 None(默认值,结果为 'rectilinear' 投影)、'aitoff'、'hammer'、'lambert'、'mollweide'、'polar' 等字符串,也可以是自定义投影的名称。 |
3. polar:如果为 True,等效于 projection='polar'。默认为 False。 |
4. sharex:可以是一个 Axes 对象,用于指定与该子图共享 x 轴的轴。共享后,轴将具有相同的限制、刻度和比例。 |
5. sharey:可以是一个 Axes 对象,用于指定与该子图共享 y 轴的轴。共享后,轴将具有相同的限制、刻度和比例。 |
6. label:为返回的 Axes 对象指定一个标签字符串。 |
3.1、参数:*args
👏*args 通常接受三种形式的参数,用于指定子图在整个子图布局中的位置。
import matplotlib.pyplot as plt
plt.subplot(2, 2, 1)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Subplot 1')
plt.subplot(222)
plt.plot([2, 3, 4], [5, 6, 7])
plt.title('Subplot 2')
plt.subplot(2, 2, (3, 4))
plt.plot([3, 4, 5], [6, 7, 8])
plt.title('Subplot 3 and 4')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122607.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3.2、参数:projection
👏
projection指定子图的投影类型。
import matplotlib.pyplot as plt
plt.subplot(
2, 2, 1
, projection='aitoff'
)
plt.plot([1, 2, 3], [4, 5, 6])
plt.subplot(
2, 2, 2
, projection='polar'
)
plt.plot([1, 2, 3], [4, 5, 6])
plt.subplot(
2, 2, 3
, projection='lambert'
)
plt.plot([1, 2, 3], [4, 5, 6])
plt.subplot(
2, 2, 4
, projection='mollweide'
)
plt.plot([1, 2, 3], [4, 5, 6])
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122608.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3.3、参数:polar
👏
polar如果为True,等效于projection='polar'。默认为False。
import matplotlib.pyplot as plt
plt.subplot(1, 2, 1)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Rectilinear')
plt.subplot(1, 2, 2, polar=True)
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('Polar using polar parameter')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122609.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3.4、参数:sharex
👏
sharex可以是一个Axes对象,用于指定与该子图共享 x 轴的轴。共享后,轴将具有相同的限制、刻度和比例。
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 1, sharex=True)
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[0].set_title('Subplot 1')
axs[1].plot([1, 2, 3], [7, 8, 9])
axs[1].set_title('Subplot 2')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122610.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3.5、参数:sharey
👏
sharey可以是一个Axes对象,用于指定与该子图共享 y 轴的轴。共享后,轴将具有相同的限制、刻度和比例。
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2, sharey=True)
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[0].set_title('Subplot 1')
axs[1].plot([1, 2, 3], [7, 8, 9])
axs[1].set_title('Subplot 2')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122611.png'
, dpi=300
, bbox_inches='tight')
# 自动调整化图形布局
plt.tight_layout()
plt.show()

3.6、参数:label
👏
label为返回的Axes对象指定一个标签字符串。
import matplotlib.pyplot as plt
ax = plt.subplot(
111
, label='my_subplot'
)
ax.plot([1, 2, 3], [4, 5, 6])
ax.set_title('Subplot with label')
plt.show()

👏label参数为子图提供了一种可识别的标识,但在一般的简单绘图中其作用可能不太明显。下面列举具体使用案例:
import matplotlib.pyplot as plt
import numpy as np
# 创建两个子图,分别给它们不同的标签
ax1 = plt.subplot(121, label='subplot1')
ax2 = plt.subplot(122, label='subplot2')
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
ax1.plot(x, y1)
ax1.set_title('Sine Wave')
ax2.plot(x, y2)
ax2.set_title('Cosine Wave')
# 假设现在需要对标记为'subplot2'的子图进行一些特定操作
for ax in plt.gcf().axes:
if ax.get_label() == 'subplot2':
ax.set_facecolor('lightgray')
ax.set_xlabel('X Label for Subplot2')
# 保存图形为 PNG 格式
plt.savefig('matplotlib_24122613png'
, dpi=300
, bbox_inches='tight')
plt.show()

👏总结:
matplotlib.pyplot.subplot()方法用于创建子图布局中的一个子图。
Python 端到端的机器学习AI入门:详细介绍机器学习建模过程,步骤细节;以及人工智能的分阶段学习线路图。 🚀 点击查看 |
SQL + Pandas 练习题SQL 练习题目,使用 Pandas 库实现,使用 Sqlalchemy 库查看 SQL 代码血缘关系。 🚀 点击查看 |
Python 数据可视化介绍了有关 Matplotlib,Seaborn,Plotly 几个 Python 绘图库的简单使用。 🚀 点击查看 |
385

被折叠的 条评论
为什么被折叠?



