axes3d.plot_线框(X,Y,Z)E

2024-04-25 01:24:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过youtube上的一个教程来学习Python,我在处理3D图形方面遇到了一些困难。长话短说,我不断得到(如果

Z.ndim != 2:
AttributeError: 'list' object has no attribute 'ndim')

尝试启动此简单程序时出错:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()

chart = fig.add_subplot(1,1,1,projection = '3d')

X,Y,Z = [1,2,3,4,5,6,7,8],[2,5,3,8,9,5,6,1],[3,6,2,7,5,4,5,6]

chart.plot_wireframe(X,Y,Z)

plt.show()

我知道它与Axes3.plot_wireframe()方法有关,但有谁能向我解释发生了什么。


Tags: import图形objectplotyoutubechartfig教程
3条回答

我有一个确切的问题(视频中的例子虽然完全被复制,但不起作用)。在不查看源代码的情况下,我假设matplotlib 2.1.0中添加了一个实际检查,它现在阻止了1D数组在plot_线框中的使用。将该方法调用改为简单的“plot”确实解决了问题。

指挥部 ax.plot_wireframe(x,y,z, rstride=2, cstride=2) 正在创建最新版本的问题。 尝试使用:

ax.plot(x,y,z)

这肯定能解决你的问题。 众所周知,Python与旧库不一致。 我得到这个图像作为输出: This is the 3d Image I am getting

我做了两件事来解决这个问题。

  1. 将numpy导入为np
  2. 使z轴成为多维数组

&13;
&13;
#My 3d graph

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

figure = plt.figure()
axis = figure.add_subplot(111, projection = '3d')

x = [1,2,3,4,5,6,7,8,9,10]
y = [5,6,7,8,2,5,6,3,7,2]
z = np.array([[1,2,6,3,2,7,3,3,7,2],[1,2,6,3,2,7,3,3,7,2]])

axis.plot_wireframe(x, y, z)

axis.set_xlabel('x-axis')
axis.set_ylabel('y-axis')
axis.set_zlabel('z-axis')

plt.show()

Take special note of the z variable. If z is not multidimensional, it will throw an error.

希望它能解决您的问题

相关问题 更多 >