在matplotlib中去除子图马赛克之间的间隙
我该如何去掉马赛克图中子图之间的空隙?传统的方法在马赛克图上不管用:
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)
这段代码生成了:

1 个回答
4
这个问题不是因为 subplot_mosaic
引起的,而是因为你指定了一个 layout
(布局)。如果你使用了限制性布局(constrained layout)或紧凑布局(tight 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)