matplotlib 使用GridSpec保留方形布局

jrcvhitl  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(122)

如何将GridSpec对齐为如下所示?

|‾ ‾ ‾ ‾|  |‾ ‾|  |‾ ‾|
|       |  |_ _|  |_ _|
|       |  |‾ ‾|  |‾ ‾|
|_ _ _ _|  |_ _|  |_ _|

我尝试了以下方法:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import numpy as np

gs = GridSpec(2, 3, hspace=-0.1)
fig = plt.figure()
ax1 = fig.add_subplot(gs[:2, :2])
ax2 = fig.add_subplot(gs[0, 2])
ax3 = fig.add_subplot(gs[1, 2])

ax1.set_aspect("equal")
ax2.set_aspect("equal")
ax3.set_aspect("equal")
 
plt.show()

输出:

但是当手动调整绘图的宽度和高度时,间距不会保留:

有没有可能以某种方式指定这个约束?

pb3skfrl

pb3skfrl1#

在阅读了这个tutorial page之后,这是我能得到的最接近的:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

fig = plt.figure(constrained_layout=True)
gs0 = fig.add_gridspec(1, 2)

gs00 = gs0[0].subgridspec(1, 1)
ax0 = fig.add_subplot(gs00[0, 0])

gs01 = gs0[1].subgridspec(2, 2)
ax1 = fig.add_subplot(gs01[0, 0])
ax2 = fig.add_subplot(gs01[0, 1])
ax3 = fig.add_subplot(gs01[1, 0])
ax4 = fig.add_subplot(gs01[1, 1])
fig

相关问题