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_space
和 w_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。
希望对您有所帮助
我似乎无法让子图之间的水平间隙消失。有什么建议么?
代码:
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_space
和 w_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。
希望对您有所帮助