2013-08-11 38 views
5

私は100万行の3列(xピクセル、yピクセル、z値)のデータを持っています。データは画像からのもので、重複したz値があります。今私はサーフェスプロットを作成する必要があります。 This imageは完璧な例です。しかし、出力イメージはnullになりました。コードを確認してもらえますか?scipy.interpolateのgriddataの使い方

import numpy as np 
from enthought.mayavi import mlab 
from scipy.interpolate import griddata 
x,y,z = np.loadtxt('test.csv',delimiter=',',usecols=(0,1,2),unpack=True) 
xi,yi = np.mgrid[0:3000:3000j, 0:3000:3000j] 
zi = griddata((x, y), z, (xi, yi),method='linear') 
mlab.surf(xi,yi,zi) 
mlab.show() 
+0

なぜ '0:3000:3000j'ですか? 「0:3000:1」 – pseudoDust

+0

「0:3000:1」は同じ意味ではありません。おそらく '0:3000'ですか? – horchler

+0

2つの方法は同じです。どちらもziをnullにします。 – questionhang

答えて

4
私はデータを持たずに、コードを確認することはできませんが、私は問題はあなたがスペースを超えて拡張ポイントをグリッド化しているので、もしあなたが、 griddata引数としてデフォルト fill_value=nanを使用していることであると思われる

(x、y)点には、グリッド内にNaNがあり、mlabは処理できない場合があります(matplotlibは簡単ではありません)。 fill_value=0または別の適切な実数を設定してみてください。