matplotlib 删除3D图周围的白色区域[重复]

k10s72fa  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(130)

此问题已在此处有答案

Removing white space around a saved image(15个回答)
19天前关闭。
我使用matplotlib创建了一个高斯曲面图:

num_pts = 1000
σ = 1.5

x = np.linspace(-5, 5, num_pts)
kernel1d = np.exp(-np.square(x) / (2 * σ * σ))
kernel2d = np.outer(kernel1d, kernel1d)

X, Y = np.meshgrid(x, x)

fig, ax = plt.subplots(figsize=(6,6), subplot_kw={"projection":"3d"})
ax.plot_surface(X, Y, kernel2d, cmap="viridis", linewidth=0, antialiased=True)
ax.set(xticks=[], yticks=[], zticks=[])
ax.grid(False)
ax.axis('off')

fig.savefig("test.svg", format="svg", transparent=True)

输出在实际情节周围有很多死区。

我试了layout=tight,没有任何效果。
我怎样才能最大化的大小表面withing图假设不需要任何轴:刻度,标签,网格等.

yh2wf1be

yh2wf1be1#

您可以使用pad_inches值:

fig.savefig("test.svg", format="svg", transparent=True, bbox_inches='tight', pad_inches=-0.4)

否则,也许您可以尝试获取包含路径的边界框,并基于此设置轴限制:https://stackoverflow.com/a/76076555/7750891

9rygscc1

9rygscc12#

在定义绘图时,设置轴上的限制将在功能上放大和缩小。layout=tight影响绘图周围的白色空间,或者在子绘图的情况下,将有效地将它们压缩得更近。

# change the limits of the axes to zoom in
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.set_zlim(0, 1)

结果:

如果它是空白周围的绘图区,你想删除,然后

# remove everything surrounding the plot
fig.tight_layout(pad=0)

将导致:

相关问题