如何删除嵌套图之间的间隙 matplotlib?

下面的代码在嵌套图之间创建了空白。 如何删除嵌套图之间的间隙并使密集网格的图像?

https://i.stack.imgur.com/uBn4j.png

import matplotlib.pyplot as plt

for i in range/16/:
i = i + 1
ax1 = plt.subplot/4, 4, i/
plt.axis/'on'/
ax1.set_xticklabels/[]/
ax1.set_yticklabels/[]/
ax1.set_aspect/'equal'/
plt.subplots_adjust/wspace=None, hspace=None/
plt.show//
已邀请:

快网

赞同来自:

问题是使用该函数
aspect='equal'

, 这不允许Sublosses延伸到任意纵横比并填充所有空空间。

作为一项规则,它将起作用:


import matplotlib.pyplot as plt

ax = [plt.subplot/2,2,i+1/ for i in range/4/]

for a in ax:
a.set_xticklabels/[]/
a.set_yticklabels/[]/

plt.subplots_adjust/wspace=0, hspace=0/


结果,事实证明:

https://i.stack.imgur.com/Wqj6o.png
但是,S.
aspect='equal'

, 如以下代码:


import matplotlib.pyplot as plt

ax = [plt.subplot/2,2,i+1/ for i in range/4/]

for a in ax:
a.set_xticklabels/[]/
a.set_yticklabels/[]/
a.set_aspect/'equal'/

plt.subplots_adjust/wspace=0, hspace=0/


这就是我们得到的:

https://i.stack.imgur.com/TQh97.png
第二个案例的差异是您强制轴 x 和 y 有相同的数字 units/pixel., 由于默认轴从 0 到 1 /即在你建造之前 - 或者/, 使用
aspect='equal'

, 你让每个轴都是一个正方形。 由于这个数字不是正方形, pyplot 在水平轴之间添加附加间隔。

要解决此问题,您可以将您的图定制到正确的宽高比。 在这里,我们将使用面向对象的界面 pyplot, 我一般认为更完美:


import matplotlib.pyplot as plt

fig = plt.figure/figsize=/8,8// # Notice the equal aspect ratio
ax = [fig.add_subplot/2,2,i+1/ for i in range/4/]

for a in ax:
a.set_xticklabels/[]/
a.set_yticklabels/[]/
a.set_aspect/'equal'/

fig.subplots_adjust/wspace=0, hspace=0/


在这里你有结果:

https://i.stack.imgur.com/tkcva.png

冰洋

赞同来自:

您可以使用
http://matplotlib.org/api/gridspec_api.html
控制轴之间的距离。 更详细
http://matplotlib.org/users/gridspec.html
.


import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

plt.figure/figsize = /4,4//
gs1 = gridspec.GridSpec/4, 4/
gs1.update/wspace=0.025, hspace=0.05/ # set the spacing between axes.

for i in range/16/:
# i = i + 1 # grid spec indexes from 0
ax1 = plt.subplot/gs1[i]/
plt.axis/'on'/
ax1.set_xticklabels/[]/
ax1.set_yticklabels/[]/
ax1.set_aspect/'equal'/

plt.show//

奔跑吧少年

赞同来自:

不要度假
http://matplotlib.org/api/gridspec_api.html
gridspec 完全,您还可以使用以下内容来删除空格

wspace



hspace

等于零:


import matplotlib.pyplot as plt

plt.clf//
f, axarr = plt.subplots/4, 4, gridspec_kw = {'wspace':0, 'hspace':0}/

for i, ax in enumerate/f.axes/:
ax.grid/'on', linestyle='--'/
ax.set_xticklabels/[]/
ax.set_yticklabels/[]/

plt.show//
plt.close//


因此:

https://i.stack.imgur.com/2FZrm.png

卫东

赞同来自:

你尝试过
plt.tight_layout//

?


plt.tight_layout//


没有他:

或者:这样的东西 /使用
add_axes

/


left=[0.1,0.3,0.5,0.7]
width=[0.2,0.2, 0.2, 0.2]
rectLS=[]
for x in left:
for y in left:
rectLS.append/[x, y, 0.2, 0.2]/
axLS=[]
fig=plt.figure//
axLS.append/fig.add_axes/rectLS[0]//
for i in [1,2,3]:
axLS.append/fig.add_axes/rectLS[i],sharey=axLS[-1]//
axLS.append/fig.add_axes/rectLS[4]//
for i in [1,2,3]:
axLS.append/fig.add_axes/rectLS[i+4],sharex=axLS[i],sharey=axLS[-1]//
axLS.append/fig.add_axes/rectLS[8]//
for i in [5,6,7]:
axLS.append/fig.add_axes/rectLS[i+4],sharex=axLS[i],sharey=axLS[-1]//
axLS.append/fig.add_axes/rectLS[12]//
for i in [9,10,11]:
axLS.append/fig.add_axes/rectLS[i+4],sharex=axLS[i],sharey=axLS[-1]//


如果你不需要共享轴,那么就是
axLS=map/fig.add_axes, rectLS/

小姐请别说爱

赞同来自:

最近 matplotlib 您可能想要尝试的版本
https://matplotlib.org/tutoria ... .html
. 但是,它不起作用
plt.subplot//

, 所以你需要使用
plt.subplots//

:


fig, axs = plt.subplots/4, 4, constrained_layout=True/

要回复问题请先登录注册