如何在Python中显示3D绘图?代码运行出现空白白屏问题求助
3D绘图白屏问题排查与解决
核心原因1:Axes3D初始化方式过时
matplotlib 3.4+版本已不再推荐直接实例化Axes3D对象,旧写法在部分环境中会导致渲染失败,出现白屏。
解决办法:
将创建3D轴的代码从:
ax = Axes3D(fig)
替换为官方推荐的写法:
ax = fig.add_subplot(projection='3d')
核心原因2:matplotlib后端不支持交互式显示
如果当前matplotlib使用的是非交互式后端(如Agg),仅会生成图片文件而不会弹出显示窗口,表现为白屏或无窗口响应。
解决办法:
- 先查看当前使用的后端:
print(plt.get_backend())
- 切换到支持交互式渲染的后端,在代码开头添加:
plt.switch_backend('TkAgg') # 或QtAgg、GTK3Agg等,根据系统环境选择适配的后端
额外问题:双变量正态分布计算错误(非白屏原因,但影响图形正确性)
你的np_bivariate_normal_pdf函数存在变量名混淆(将步长参数命名为variance),且双变量正态分布的公式错误,会导致生成的Z值不符合预期。
修正后的函数:
def np_bivariate_normal_pdf(domain, mean, step, variance): X = np.arange(-domain + mean, domain + mean, step) Y = np.arange(-domain + mean, domain + mean, step) X, Y = np.meshgrid(X, Y) # 标准双变量正态分布(独立变量)公式 Z = (1. / (2 * np.pi * variance**2)) * np.exp(-(X**2 + Y**2) / (2 * variance**2)) return X, Y, Z
调用时传入正确的步长和方差参数:
plt_plot_bivariate_normal_pdf(*np_bivariate_normal_pdf(4, 0, .25, 1))
内容的提问来源于stack exchange,提问作者terett
相关产品推荐
相关产品推荐

