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

Python调用plot_wireframe报错:list对象无ndim属性

3D绘图报错解决方法

错误原因

plot_wireframe函数要求传入的X、Y、Z必须是二维numpy数组,而你用的是普通Python列表,既没有ndim属性,也不符合线框绘图需要的网格数据格式。另外,你当前的X、Y、Z只是3个离散点,根本不足以生成线框(线框需要网格状的数据集)。

解决方案

情况1:绘制离散3D点

如果你的需求是展示这几个离散点,不要用plot_wireframe,改用plot3D或scatter3D:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as pt
import numpy as np

fig = pt.figure()
chart = fig.add_subplot(1,1,1,projection = "3d")
X,Y,Z = [3,15,23],[7,9,23],[7,10,19]
# 绘制带标记点的连线
chart.plot3D(X,Y,Z, marker='o')
# 或者单独绘制散点
# chart.scatter3D(X,Y,Z, color='r')
pt.show()

情况2:正确绘制3D线框

如果确实需要绘制线框,需要准备网格数据,示例如下:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as pt
import numpy as np

fig = pt.figure()
chart = fig.add_subplot(1,1,1,projection = "3d")
# 生成网格状的X、Y数据
X, Y = np.meshgrid(np.linspace(-5,5,20), np.linspace(-5,5,20))
# 计算对应网格的Z值(这里用一个简单的曲面公式)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 绘制线框
chart.plot_wireframe(X,Y,Z)
pt.show()

包版本检查与更新

  • 检查当前matplotlib版本:
    import matplotlib
    print(matplotlib.__version__)
    
  • 更新matplotlib到最新版:
    在终端执行命令:
    pip install --upgrade matplotlib
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:37:13