如何使用matplotlib在Python中绘制3D图



我是Python和Matplotlib的新手

np.append(self.arraynv,nv)
np.append(self.arraysvdb,Svdb)
np.append(self.arraykclen,kclen)

我想分别为x,y和z轴点我写的代码:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
Axes3D.plot(self.arraynv,self.arraysvdb, self.arraykclen)
ax.show()

我遇到的错误:

'numpy.ndarray' object has no attribute 'has_data'

我相信问题是因为您没有在此行上使用ax = fig.add_subplot(111, projection='3d')创建的ax对象来调用此行Axes3D.plot(self.arraynv,self.arraysvdb, self.arraykclen)上的绘图函数。

问题是AXES3D是一类,而不是本身的实例。绘图函数是类AXES3D的一部分,但是要能够称呼它,您需要使用该类的实例,该实例是您创建的对象,称为ax

另一个问题是您的最后一行ax.show()无法通过您的对象ax调用show()函数。改用plt.show()

尝试以下操作:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(self.arraynv,self.arraysvdb, self.arraykclen)
plt.show()

请记住,只能使用上述类的实例来调用类函数,然后才能调用函数: x.function(arg1,arg2)

尝试以下:

   import matplotlib.pyplot as plt
    import numpy as np
    from sklearn.datasets import make_s_curve
    from mpl_toolkits.mplot3d import Axes3D
    '''
    make and plot 3d
    '''
    X, y = make_s_curve(n_samples=1000)
    ax = plt.axes(projection='3d')
    ax.scatter3D(X[:, 0], X[:, 1], X[:, 2], c=y)
    ax.view_init(10, -60)
    plt.show()

相关内容

  • 没有找到相关文章