2011-10-28 17 views
3

右、x値、y値、z値のリストがあります(これは配列に変換されたと思います)。サーフェスプロットを作成したいのですが、動作しません。ここでmatplotlib 3dワイヤフレームプロット

は私がやろうとしているものだそれはかなり無関係であるとして、あなたは、コードのほとんどを無視することができます - ちょうど私がxdisydisdistを持って最後を見て、私は、ATM Iをプロットしようとしているところ」メートルとValueError取得:。:(解凍する必要以上の1の値に感謝ヘルプ

from math import * 
from numpy import * 
import pylab 
def sweep (v,p,q,r,s): 
    a=.98 

    for i in range (1, len(v)-1): 
     for j in range (1, len(v)-1): 
      c =0.0 

      if i==p and j==q: c =1.0 
      if i==r and j==s: c= -1.0 
      v[i,j]=(v[i -1,j]+v[i+1,j]+v[i,j -1]+v[i,j+1]+c-a*v[i,j])/(4-a) 

def main(): 
    from mpl_toolkits.mplot3d import Axes3D 
    from matplotlib import cm 
    from matplotlib.ticker import LinearLocator, FormatStrFormatter 
    import matplotlib.pyplot as plt 
    ydis=[] 
    xdis=[] 
    resis=[] 
    for j in range(2,18): 
     for i in range(2,18): 
      v= zeros ((20,20),float) 
      p=q=9 
      r=i 
      s=j 
      dv =1.0e10 
      lastdv =0 
      count =0 
      while (fabs(dv - lastdv)>1.0e-7*fabs(dv)): 
       lastdv =dv 
       sweep(v,p,q,r,s) 
       dv=v[p,q]-v[r,s] 
      resis.append(dv) 
      xdis.append(r-p) 
      ydis.append(s-q) 

    X=array(xdis) 
    Y=array(ydis) 
    Z=array(resis) 
    fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    ax.plot_wireframe(X,Y,Z) 
    plt.show() 
main() 

答えて

3

plot_wireframeは、入力として3つの2D配列(X、Y、Z)を想定しているため、

後:

X=np.array(xdis) 
Y=np.array(ydis) 
Z=np.array(resis) 

追加:

X=X.reshape((-1,16)) 
Y=Y.reshape((-1,16)) 
Z=Z.reshape((-1,16))   
0

それは「スイープ」機能を使用すると、空のリストを取得しているように、「V」を修正しているように見えるしていません。

関連する問題