Python子图放置

时间:2018-12-20 15:19:02

标签: python python-3.x matplotlib subplot

这必须是一个菜鸟问题,但是,我怎么能拥有两个具有数字(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如果没放在一起就可以了。

2 个答案:

答案 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]))

enter image description here

这是使用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])