matplotlib:删除轴之间的水平间隙?

matplotlib: remove horizontal gap between axes?

我似乎无法让子图之间的水平间隙消失。有什么建议么?

代码:

plt.clf()
fig = plt.figure()
for i in range(6):
    ax = fig.add_subplot(3,2,i)

    frame_range = [[]]

    ax.set_xlim(-100000, 1300000)
    ax.set_ylim(8000000, 9100000) 
    ax.set_aspect(1)
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_frame_on(False)

    ax.add_patch(dt.PolygonPatch(provs[0],fc = 'None', ec = 'black'))


fig.tight_layout(pad=0, w_pad=0, h_pad=0)
plt.subplots_adjust( wspace=0, hspace=0)

plt.savefig(wd + 'example.png')

针对此代码发布的示例,以及保留的刻度和框架。

您正在为图表设置两个并发规则。

一个是轴方面

ax.set_aspect(i)

这将强制情节始终遵循 1:1 比例。

另一个正在设置 h_spacew_space 为零。在这种情况下,matplotlib 将尝试更改轴的大小以将空格减少到零。当您将 aspect 设置为 1 时,只要其中一条边相互接触,轴的大小将不再改变。这会产生使图形水平分开的间隙。

有两种方法可以强制它们彼此靠近。

  • 您可以更改图形宽度以使它们彼此更接近。
  • 您可以设置左右边缘的间距,使它们彼此靠得更近。

使用你给出的例子,我修改了几行来说明左右间距可以做什么。

fig = plt.figure()
for i in range(6):
    ax = fig.add_subplot(3,2,i)
    ax.plot(linspace(-1,1),sin(2*pi*linspace(-1,1)))
    draw()
    frame_range = [[]]

    ax.set_aspect(1)
    ax.set_xticks([])
    ax.set_yticks([])
#    ax.set_frame_on(False)
#    ax.add_patch(dt.PolygonPatch(provs[0],fc = 'None', ec = 'black'))


fig.tight_layout(pad=0,w_pad=0, h_pad=0)
subplots_adjust(left=0.25,right=0.75,wspace=0, hspace=0)

结果应该如下图所示。 重要的是要记住,如果你调整 window 的大小,这些图将再次分开,这取决于你是 taller/shorter 还是 wider/narrower。

希望对您有所帮助