我似乎无法让子图之间的水平差距消失。有什么建议?
代码:
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')
此代码都发布了示例,并留下了刻度和框架。
答案 0 :(得分:2)
您正在为图表设置两个并发规则。
一个是轴方面
ax.set_aspect(i)
这将迫使情节始终遵循1:1的比例。
另一个是将h_space
和w_space
设置为零。在这种情况下,matplotlib将尝试更改轴的大小以将空间减少为零。当您将其中一个边缘相互接触时,将方面设置为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)
结果应该类似于下图。 重要的是要记住,如果你调整窗口的大小,那么将重新分割图块,这取决于你是否使它更宽/更短更宽/更窄。
希望它有所帮助