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 绘图库的简单使用。

🚀 点击查看 
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐