2017-12-14 23 views
0

I Pythonとmatplotlibのに新しいです、私は線グラフをプロットすると、私は3つの配列を有する:それぞれmatplotlibを使ってpythonで3次元グラフをプロットする方法は?

Iは、x、y及びz軸点にしたい
np.append(self.arraynv,nv) 
np.append(self.arraysvdb,Svdb) 
np.append(self.arraykclen,kclen) 

を Iが書いたコード:

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' 

答えて

0

はこれを試してみてください。

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() 
3

ax = fig.add_subplot(111, projection='3d') この行に作成したオブジェクトを使用していないため、この行のプロット関数Axes3D.plot(self.arraynv,self.arraysvdb, self.arraykclen)を使用していると考えられます。

Axes3Dはクラスであり、それ自体のインスタンスではありません。プロット関数はAxes3Dクラスの一部ですが、それを呼び出すには、前の行にaxという名前で作成したオブジェクトであるそのクラスのインスタンスを使用する必要があります。

もう1つの問題は、オブジェクトaxでshow()関数を呼び出せない最後の行ax.show()です。代わりにplt.show()を使用してください。

はこれを試してみてください。x.function(arg1,arg2)

+0

ありがとう:

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

その関数を言っクラスのインスタンスを使用して、クラスの機能のみを呼び出すことができますことを忘れないでください!これはうまくいった – Sanju

+2

コードはもちろん正しいです。説明について: 'Axes3D'はクラスです。その 'plot'メソッドは、クラスそのものではなく、クラスのインスタンス**で呼び出されることを意図しています。 'ax'は' plot'メソッドを呼び出すクラスのインスタンスです。たぶんあなたはそれをよりよく説明するために答えを更新することができます。 @Sanjuこれが問題を解決する場合は、[accepting and upvoting](https://stackoverflow.com/help/someone-answers)を検討してください。 – ImportanceOfBeingErnest

関連する問題