<p>通过设置<code>fig.subplots_adjust(top=1, bottom=0, left=0, right=1)</code>,可以减少图形边距。这可能足够,也可能不够,这取决于实际数字。在</p>
<p>还要注意,如果axes aspect设置为相等,<code>figsize</code>必须是平方的。(这里不是这种情况,但在其他情况下可能需要)。在</p>
<p>最后一个要转动的旋钮是减小轴的限制。可以将这些值设置为较小的值,以减少对象周围的空白。
例如,在绘制一个半径为1的球体时,可能会试图将限制设置为<code>[-1,1]</code>,以使整个球体适合绘图。但是,这会留下很多空白。将限制减少到<code>[-0.57,0.57]</code>将使球体很好地适应图形。为了看到这个效果,我在下面的例子中打开了轴。在</p>
<pre><code>import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
u = np.linspace(0, 2 * np.pi, 12)
v = np.linspace(0, np.pi,15)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))
F = np.sin(x)*y + z
F = (F-F.min())/(F-F.min()).max()
#Set colours and render
fig = plt.figure(figsize=(8,4))
fig.subplots_adjust(top=1, bottom=0, left=0, right=1, wspace=0)
ax = fig.add_subplot(121, projection='3d')
ax2 = fig.add_subplot(122, projection='3d')
# plotting a sphere with radius 1.
# Naturally, setting the limits to 1 makes sense
ax.plot_surface(x,y,z, rstride=1, cstride=1, facecolors=cm.jet(F), alpha=0.5)
ax.set_xlim(np.array([-1,1]))
ax.set_ylim(np.array([-1,1]))
ax.set_zlim(np.array([-1,1]))
# plotting a sphere with radius 1.
# but now reducing the limits
ax2.plot_surface(x,y,z, rstride=1, cstride=1, facecolors=cm.jet(1-F), alpha=0.5)
ax2.set_xlim(np.array([-1,1])*.57)
ax2.set_ylim(np.array([-1,1])*.57)
ax2.set_zlim(np.array([-1,1])*.57)
#ax.axis('off') # turned on to see the effect. Turn off to have a nice image.
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/68V7l.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/68V7l.png" alt="enter image description here"/></a></p>