Matplotlib 3.10.6中layout是否为subplots()的有效参数?
Matplotlib
subplots() 中layout参数的作用说明 当前使用版本
- Matplotlib版本:3.10.6
- 版本验证代码:
>>> import matplotlib >>> print ('matplotlib: {}'.format(matplotlib.__version__)) matplotlib: 3.10.6
layout参数作用说明
matplotlib.pyplot.subplots()里的layout参数用于指定画布的布局管理器,核心是优化子图及元素的排版:
- 当设置为
"constrained"时,布局管理器会自动调整子图间距、画布边距,确保坐标轴标签、标题、图例等元素不会重叠,整体排版紧凑美观。 - 不设置该参数时,使用默认布局,容易出现子图元素(如下方子图的x轴标签和上方子图底部)重叠的问题,空间利用率较差。
通过以下示例代码的两种运行结果(带layout="constrained"和不带)可直观看到差异:
import matplotlib.pyplot import numpy numpy.random.seed(10) dt = 0.01 t = numpy.arange(0, 30, dt) nse1 = numpy.random.randn(len(t)) nse2 = numpy.random.randn(len(t)) s1 = numpy.sin(2 * numpy.pi * 10 * t) + nse1 s2 = numpy.sin(2 * numpy.pi * 10 * t) + nse2 fig, axs = matplotlib.pyplot.subplots(2, 1, layout="constrained") axs[0].plot(t, s1, t, s2) axs[0].set_xlim(0, 2) axs[0].set_xlabel('Time (s)') axs[0].set_ylabel('s1 and s2') axs[0].grid(True) cxy, f = axs[1].cohere(s1, s2, NFFT=256, Fs=1. / dt) axs[1].set_ylabel('Coherence') matplotlib.pyplot.show()
- 带
layout="constrained"的效果:子图间距适配元素大小,所有标签清晰可见、无重叠 - 不带
layout参数的效果:子图间间距不足,易出现标签重叠
官方语法及参数翻译
Matplotlib官方文档中
matplotlib.pyplot.subplots()的语法(中文翻译):matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, width_ratios=None, height_ratios=None, subplot_kw=None, gridspec_kw=None, **fig_kw)
参数说明:
nrows:子图网格的行数,默认值为1ncols:子图网格的列数,默认值为1*:PEP 3102规定的仅关键字参数分隔符,分隔符前的参数可按位置传递,之后的参数必须指定参数名才能传递sharex:控制子图是否共享x轴,默认值为Falsesharey:控制子图是否共享y轴,默认值为Falsesqueeze:是否压缩返回的子图数组维度,默认值为True(例如当nrows和ncols都为1时,返回单个Axes对象而非数组)width_ratios:子图列宽的比例,默认值为None(所有列宽度相等)height_ratios:子图行高的比例,默认值为None(所有行高度相等)subplot_kw:传递给subplot()函数的关键字参数字典,用于配置每个子图的属性gridspec_kw:传递给GridSpec构造函数的关键字参数字典,用于配置网格布局细节**fig_kw:传递给figure()函数的关键字参数,layout就属于这类参数,用于指定画布使用的布局管理器
内容的提问来源于stack exchange,提问作者phobia666
相关产品推荐
相关产品推荐

