我是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()