2013-08-11 6 views
5

Ho una dati a tre colonne (x-pixel, y-pixel, il valore z) con un milione di linee. I dati provengono da un'immagine e ci sono valori z duplicati. Ora ho bisogno di fare una trama di superficie. This image è un esempio perfetto. Ma ora l'immagine di output è nullo. Qualcuno potrebbe controllare il codice, per favore?Come utilizzare gridData da 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

perché '0: 3000: 3000j'? non dovrebbe essere '0: 3000: 1' – pseudoDust

+0

' 0: 3000: 1' è altrettanto priva di senso. Forse '0: 3000'? – horchler

+0

I due modi sono gli stessi. Ognuno di essi rende zi nullo. – questionhang

risposta

4

non posso controllare il codice senza avere i dati, ma ho il sospetto che il problema è che si sta utilizzando il default fill_value=nan come argomento griddata, quindi se avete gridded i punti che si estendono oltre lo spazio di (x, y) punti, ci sono NaNs nella griglia, che MLAB non può essere in grado di gestire (matplotlib fa non facilmente). Prova a impostare fill_value=0 o un altro numero reale adatto.

Problemi correlati