这与new pythonic style for shared axes square subplots in matplotlib?相关(或者更确切地说是跟进)。
我想让子图共享一个轴,就像上面链接的问题一样。但是,我也希望这些情节之间没有空间。这是我的代码的相关部分:
f, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)
plt.setp(ax1, aspect=1.0, adjustable='box-forced')
plt.setp(ax2, aspect=1.0, adjustable='box-forced')
# Plot 1
ax1.matshow(pixels1, interpolation="bicubic", cmap="jet")
ax1.set_xlim((0,500))
ax1.set_ylim((0,500))
# Plot 2
ax2.matshow(pixels2, interpolation="bicubic", cmap="jet")
ax2.set_xlim((0,500))
ax2.set_ylim((0,500))
f.subplots_adjust(wspace=0)
这就是结果:
如果我注释掉两个plt.setp()命令,我会添加一些白色边框:
如何使图形看起来像我的第一个结果,但轴的触摸方式与第二个结果相似?
答案 0 :(得分:5)
编辑:获得结果的最快方法是@Benjamin Bannier所描述的,只需使用
fig.subplots_adjust(wspace=0)
另一种方法是制作宽度/高度比等于2
的图形(因为你有两个图)。仅当您计划在文档中包含图形并且您已经知道最终文档的列宽时,这可能是可取的。
您可以在调用Figure(figsize=(width,height))
时设置宽度和高度,或者以{英寸为单位设置为plt.subplots()
的参数。例如:
fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True,figsize=(8,4))
fig.subplots_adjust(0,0,1,1,0,0)
截图:
正如@Benjamin Bannier指出的那样,作为一个缺点,你的利润为零。然后你可以使用subplot_adjust()
,但如果你想保持解决方案的简单,你必须小心以对称方式创建空间。一个例子可能是fig.subplots_adjust(.1,.1,.9,.9,0,0)
。