删除 matplotlib 中 subplots_mosaic 之间的间隙

问题描述 投票:0回答:1

如何消除马赛克上子图之间的间隙?传统方式不适用于马赛克:

plt.subplots_adjust(wspace=0, hspace=0)

我也尝试过使用

gridspec_kw
,但没有运气。

import matplotlib.pyplot as plt
import numpy as np

ax = plt.figure(layout="constrained").subplot_mosaic(
    """
    abcde
    fghiX
    jklXX
    mnXXX
    oXXXX
    """,
    empty_sentinel="X",
    gridspec_kw={
        "wspace": 0,
        "hspace": 0,
    },
)


for k,ax in ax.items():
    print(ax)
    #ax.text(0.5, 0.5, k, transform=ax.transAxes, ha="center", va="center", fontsize=8, color="darkgrey")
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    ax.tick_params(length = 0)

代码生成:

python matplotlib subplot
1个回答
0
投票

这不是由

subplot_mosaic
引起的,而是因为指定了
layout
。如果您使用受限或紧凑的布局,布局管理器将取代自定义调整。

删除布局管理器,任一方法都可以:

  • gridspec_kw

    fig = plt.figure() # without layout param
    ax = fig.subplot_mosaic(
        """
        abcde
        fghiX
        jklXX
        mnXXX
        oXXXX
        """,
        empty_sentinel="X",
        gridspec_kw={
            "wspace": 0,
            "hspace": 0,
        },
    )
    
  • subplots_adjust

    fig = plt.figure() # without layout param
    ax = fig.subplot_mosaic(
        """
        abcde
        fghiX
        jklXX
        mnXXX
        oXXXX
        """,
        empty_sentinel="X",
    )
    fig.subplots_adjust(wspace=0, hspace=0)
    
© www.soinside.com 2019 - 2024. All rights reserved.