Matplotlib 简单教程 7:多字图:Figure.subplot_mosaic()
Matplotlib的subplot_mosaic()方法提供了灵活的子图布局功能,通过字典定义子图位置。主要参数包括:mosaic定义布局结构,sharex/sharey控制坐标轴共享,width_ratios/height_ratios调整行列比例,empty_sentinel标记空位,subplot_kw设置子图通用属性,per_subplot_kw配置特定子图属性,gridspec_kw控
1、Figure.subplot_mosaic() 介绍
👏
Figure.subplot_mosaic()方法用于创建一个复杂的子图布局,通过指定一个字典形式的布局描述来安排子图。
👏Figure.subplot_mosaic(mosaic, *, sharex=False, sharey=False, width_ratios=None, height_ratios=None, empty_sentinel='.', subplot_kw=None, per_subplot_kw=None, gridspec_kw=None)
| 参数解释 |
|---|
1.mosaic:一个字典,描述子图的布局。键是子图的名称,值是子图在布局中的位置描述。 |
2.sharex:如果为True,则所有子图共享 x 轴。默认为False。 |
3.sharey:如果为True,则所有子图共享 y 轴。默认为False。 |
4.width_ratios:一个可迭代对象,指定各列的宽度比例。 |
5.height_ratios:一个可迭代对象,指定各行的高度比例。 |
6.empty_sentinel:一个标记,用于表示空的子图位置。默认为'.'。 |
7.subplot_kw:一个字典,传递给subplots()方法的关键字参数,用于创建子图。 |
8.per_subplot_kw:一个字典,其中的键是子图的名称,值是传递给特定子图创建的关键字参数。 |
9.gridspec_kw:一个字典,传递给GridSpec构造函数的关键字参数,用于创建网格布局。 |
1.1、参数: mosaic
👏
mosaic参数用于定义子图的布局。
import matplotlib.pyplot as plt
# 创建一个包含四个子图的布局,分别命名为 'A', 'B', 'C', 'D'
mosaic_layout = [
['A', 'B'],
['C', 'D']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
)
# 在每个子图中绘制不同的图形
axes['A'].plot([1, 2, 3], [4, 5, 6])
axes['A'].set_title('Subplot A')
axes['B'].plot([2, 3, 1], [5, 6, 4])
axes['B'].set_title('Subplot B')
axes['C'].plot([3, 1, 2], [6, 4, 5])
axes['C'].set_title('Subplot C')
axes['D'].plot([1, 3, 2], [4, 6, 5])
axes['D'].set_title('Subplot D')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122901.png', dpi=300)
plt.show()

1.2、参数: sharex
👏
sharex参数用于控制子图是否共享 x 轴。当sharex=True时,所有子图将共享同一个 x 轴,这意味着对一个子图进行 x 轴的操作(如设置范围、刻度等)会影响其他子图。默认为False,即各子图有独立的 x 轴。
import matplotlib.pyplot as plt
import numpy as np
mosaic_layout = [
['plot1']
,['plot2']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, sharex=True
)
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
axes['plot1'].plot(x, y1)
axes['plot1'].set_title('Sine Wave')
axes['plot2'].plot(x, y2)
axes['plot2'].set_title('Cosine Wave')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122902.png', dpi=300)
plt.show()

1.3、参数: sharey
👏
sharey参数用于控制子图是否共享 y 轴。与sharex类似,当sharey=True时,所有子图将共享同一个 y 轴。
import matplotlib.pyplot as plt
import numpy as np
mosaic_layout = [
['plot1', 'plot2']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, sharey=True
)
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
axes['plot1'].plot(x, y1)
axes['plot1'].set_title('Sine Wave')
axes['plot2'].plot(x, y2)
axes['plot2'].set_title('Cosine Wave')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122903.png', dpi=300)
plt.show()

1.4、参数: width_ratios
👏
width_ratios参数是一个可迭代对象,用于指定各列的宽度比例。
import matplotlib.pyplot as plt
mosaic_layout = [
['wide', 'narrow']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, width_ratios=[2, 1]
)
axes['wide'].plot([1, 2, 3], [4, 5, 6])
axes['wide'].set_title('Wide Subplot')
axes['narrow'].plot([2, 3, 1], [5, 6, 4])
axes['narrow'].set_title('Narrow Subplot')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122904.png', dpi=300)
plt.show()

1.5、参数: height_ratios
👏
height_ratios参数是一个可迭代对象,用于指定各行的高度比例。
import matplotlib.pyplot as plt
mosaic_layout = [
['wide']
, ['narrow']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, height_ratios=[2, 1]
)
axes['wide'].plot([1, 2, 3], [4, 5, 6])
axes['wide'].set_title('Wide Subplot')
axes['narrow'].plot([2, 3, 1], [5, 6, 4])
axes['narrow'].set_title('Narrow Subplot')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122905.png', dpi=300)
plt.show()

1.6、参数: empty_sentinel
👏
empty_sentinel参数是一个标记,用于表示空的子图位置。默认为'.'。
import matplotlib.pyplot as plt
mosaic_layout = [
['plot', 'good']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, empty_sentinel='EMPTY'
)
axes['plot'].plot([1, 2, 3], [4, 5, 6])
axes['plot'].set_title('Plot Subplot')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122906.png', dpi=300)
plt.show()

1.7、参数: subplot_kw
👏
subplot_kw参数是一个字典,传递给subplots()方法的关键字参数,用于创建子图。可以通过这个参数来设置一些子图的通用属性,比如设置子图的背景颜色等。
import matplotlib.pyplot as plt
mosaic_layout = [
['plot']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
, subplot_kw={'facecolor': 'lightblue'}
)
axes['plot'].plot([1, 2, 3], [4, 5, 6])
axes['plot'].set_title('Subplot with custom background')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122907.png', dpi=300)
plt.show()

1.8、参数: per_subplot_kw
👏
per_subplot_kw参数是一个字典,其中的键是子图的名称,值是传递给特定子图创建的关键字参数。可以为不同的子图设置不同的属性。
import matplotlib.pyplot as plt
mosaic_layout = [
['plot1', 'plot2']
]
fig, axes = plt.subplot_mosaic(
mosaic_layout
,per_subplot_kw={
'plot1': {'facecolor': 'lightgreen'}
,'plot2': {'facecolor': 'orange'}
}
)
axes['plot1'].plot([1, 2, 3], [4, 5, 6])
axes['plot1'].set_title('Subplot 1')
axes['plot2'].plot([2, 3, 1], [5, 6, 4])
axes['plot2'].set_title('Subplot 2')
# 自动调整化图形布局
plt.tight_layout()
# 保存图形为 PNG 格式
plt.savefig('matplotlib_2024122908.png', dpi=300)
plt.show()

1.9、参数: gridspec_kw
👏
gridspec_kw参数是一个字典,传递给GridSpec构造函数的关键字参数,用于创建网格布局。可以通过这个参数来设置网格布局的一些属性,比如调整子图之间的间距等。
import matplotlib.pyplot as plt
mosaic_layout = {
'plot1': [0, 0],
'plot2': [0, 1]
}
fig, axes = plt.subplot_mosaic(mosaic_layout, gridspec_kw={'wspace': 0.5, 'hspace': 0.5})
axes['plot1'].plot([1, 2, 3], [4, 5, 6])
axes['plot1'].set_title('Subplot 1')
axes['plot2'].plot([2, 3, 1], [5, 6, 4])
axes['plot2'].set_title('Subplot 2')
plt.show()

👏总结:
Figure.subplot_mosaic()方法用于创建一个复杂的子图布局,通过指定一个字典形式的布局描述来安排子图。更多的 matplotlib 可以查看 matplotlib 教程
Python 端到端的机器学习AI入门:详细介绍机器学习建模过程,步骤细节;以及人工智能的分阶段学习线路图。 🚀 点击查看 |
SQL + Pandas 练习题SQL 练习题目,使用 Pandas 库实现,使用 Sqlalchemy 库查看 SQL 代码血缘关系。 🚀 点击查看 |
Python 数据可视化介绍了有关 Matplotlib,Seaborn,Plotly 几个 Python 绘图库的简单使用。 🚀 点击查看 |
更多推荐



所有评论(0)