You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用plt.show()绘制二元函数3D图后弹出的Figure 1窗口空白

解决VSCode中Matplotlib 3D图形空白的问题

问题分析

你的代码存在两个核心问题导致图形空白:

  • 3D轴创建方式过时:Axes3D(figure)的旧写法在部分Matplotlib版本或VSCode环境下存在渲染兼容问题
  • Z值包含无效值:当X或Y为0时,(np.sin(X)*np.sin(Y))/(X*Y)会产生NaN,导致图形渲染异常

修正后的代码

from matplotlib import pyplot as plt
import numpy as np

figure = plt.figure()
# 使用Matplotlib推荐的标准方式创建3D子图
ax = figure.add_subplot(projection='3d')
X = np.arange(-10, 10, 0.1)
Y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(X, Y)
# 处理NaN值,替换为函数在(0,0)点的极限值1
Z = np.nan_to_num((np.sin(X)*np.sin(Y))/(X*Y), nan=1.0)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()

关键修改说明

  • 更新3D轴创建方式:figure.add_subplot(projection='3d')是Matplotlib 3.1+版本官方推荐的写法,兼容性更强
  • 修复无效值问题:通过np.nan_to_num将计算产生的NaN替换为函数的极限值1,确保图形可以完整渲染

若仍有问题,可尝试指定VSCode的Matplotlib渲染后端,在代码开头添加:

plt.switch_backend('TkAgg')

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:43:11