这必须是一个菜鸟问题,但是,我怎么能拥有两个具有数字(3/4)和(1/4)的子图呢?或4/5和1/5
我尝试了gridspec和简单的子图,但是找不到方法。同时,我确信这是可能的。
到目前为止,这是我的代码:
import matplotlib.pyplot as plt
def make_ticklabels_invisible(fig):
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
for tl in ax.get_xticklabels() + ax.get_yticklabels():
tl.set_visible(False)
plt.figure(0)
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
plt.suptitle("subplot2grid")
make_ticklabels_invisible(plt.gcf())
plt.show()
ax1和ax2如果没放在一起就可以了。
答案 0 :(得分:1)
好吧,看来我不太了解 loc 的工作原理。我设法通过更改这两行来做到这一点:
ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,3), colspan=1, rowspan=4)
代替我以前的内容:
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
这是3/4和1/4的比率。
我不会删除此问题,以后会添加对loc的工作方式的解释,因为它困扰了我一段时间,因此它作为档案存在。
答案 1 :(得分:1)
考虑一下更自然的方式一次定义所有子图
fig, (ax1, ax2) = plt.subplots(ncols=2, gridspec_kw=dict(width_ratios=[3,1]))
这是使用gridspec的以下代码的快捷方式
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
gs = GridSpec(1,2, width_ratios=[3,1])
fig = plt.figure()
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])