【发布时间】:2021-04-10 09:33:07
【问题描述】:
我正在尝试在 .png 中保存 3d 图形,但绘图的白色背景不够大,无法适应 z 轴索引。 .jpg 不会出现同样的问题,因为它会自动用白色填充透明背景。
PNG Generated plot image (其实imgur也会填充背景,但是你可以看到右边的填充,因为它是灰色的)。
我使用的代码是:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# PLOTTING
fig = plt.figure(figsize=[5.0, 5.0])
ax = Axes3D(fig, auto_add_to_figure=False)
fig.add_axes(ax)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.viridis)
plt.savefig('fig_NablaBsing.png', bbox_inches='tight')
plt.show()
编辑:
经过一些测试,我很确定这是一个错误。
Matplotlib 的figure() 文档说facecolor 属性默认设置为white,但似乎并非如此。
相反,只有当我手动将 facecolor='white' 添加到 figure() 或 savefig() 时,我才能得到正确渲染的图。
【问题讨论】:
-
我试过你的代码,对我来说它工作得很好。您使用的是哪个版本的 matplotlib?您可以删除 auto_add_to_figure,因为它已被弃用。
-
我使用的是版本:3.4.1。我删除了 auto_add 但结果是一样的。顺便说一下,我正在 JupyterLab notebook 中执行代码。
-
是否有可能因为您使用的是自动用白色填充透明背景的图片查看器,所以代码对您来说可以正常工作?在这种情况下,您不会注意到问题,但它仍然存在。
标签: python matplotlib plot mplot3d