2013-08-11 9 views
5

Ich habe eine dreispaltige (X-Pixel, Y-Pixel, Z-Wert) Daten mit einer Million Zeilen. Die Daten stammen aus einem Bild und es gibt doppelte Z-Werte. Jetzt muss ich ein Oberflächenplot machen. This image ist ein perfektes Beispiel. Aber jetzt ist das Ausgabebild null. Könnte jemand bitte den Code überprüfen?So verwenden Sie Rasterdaten aus scipy.interpolate

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

Warum '0: 3000: 3000j'? sollte es nicht '0: 3000: 1' sein – pseudoDust

+0

' 0: 3000: 1' ist ebenso unsinnig. Vielleicht '0: 3000'? – horchler

+0

Die beiden Wege sind gleich. Einer von ihnen macht zi null. – questionhang

Antwort

4

ich nicht den Code überprüfen, kann die Daten ohne, aber ich vermute, dass das Problem ist, dass Sie den Standard fill_value=nan als griddata Argument verwenden, wenn Sie also Punkte gerastert haben, die über den Raum erstrecken Die (x, y) Punkte, es gibt NaNs im Gitter, die mlab nicht verarbeiten kann (Matplotlib ist nicht leicht). Versuchen Sie, fill_value=0 oder eine andere geeignete reelle Zahl zu setzen.