我正在尝试制作一个子图网格,其中一个轴跨越两个网格位置。plt.subplots
我可以使用、gridspec_kw
和轻松实现这一点plt.subplot2grid
:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2,3,sharex=True, sharey=True, gridspec_kw={'width_ratios':[1,1,0.8]})
axi = plt.subplot2grid((2,3),(0,2),rowspan=2)
plt.show()
但是,我希望右侧的跨轴更窄。当我更改width_ratios
为 时[1,1,0.5]
,我得到了这个:
其他轴发生了什么?基于这个答案GridSpec
,我可以直接使用而不是使用便利包装器来实现我想要的:
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure()
gs = GridSpec(nrows=2, ncols=3, width_ratios=[1,1,0.5])
ax0 = plt.subplot(gs[0,0])
ax1 = plt.subplot(gs[0,1],sharey=ax0)
ax2 = plt.subplot(gs[1,0],sharex=ax0)
ax3 = plt.subplot(gs[1,1],sharex=ax1,sharey=ax2)
ax4 = plt.subplot(gs[:,2])
[plt.setp(z.get_yticklabels(),visible=False) for z in [ax1,ax3]]
[plt.setp(z.get_xticklabels(),visible=False) for z in [ax0,ax1]]
plt.show()
虽然这可行,但必须手动设置所有内容很乏味,尤其是当我只需两行代码就可以如此接近时。是否有人对如何使用subplots
/subplot2grid
或我是否坚持这样做很长一段路有想法?这值得在 GitHub 上发布问题报告吗?