2013-08-11 16 views
5

Tôi có dữ liệu ba cột (x-pixel, y-pixel, z-value) với một triệu dòng. Dữ liệu từ một hình ảnh và có các giá trị z được sao chép. Bây giờ tôi cần tạo ra một âm mưu bề mặt. This image là một ví dụ hoàn hảo. Nhưng bây giờ hình ảnh đầu ra là null. Ai đó có thể kiểm tra mã xin vui lòng?Cách sử dụng griddata từ 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

lý do tại sao '0: 3000: 3000j'? không nên là '0: 3000: 1' – pseudoDust

+0

' 0: 3000: 1' cũng không phải là vô nghĩa. Có lẽ '0: 3000'? – horchler

+0

Hai cách là giống nhau. Cả hai đều làm cho zi rỗng. – questionhang

Trả lời

4

tôi không thể kiểm tra mã mà không có dữ liệu, nhưng tôi nghi ngờ rằng vấn đề là bạn đang sử dụng mặc định fill_value=nan như một đối số griddata, vì vậy nếu bạn đã chấn chia vạch điểm mà mở rộng ra ngoài không gian của các điểm (x, y), có các NaN trong lưới, mà mlab có thể không xử lý được (matplotlib không dễ dàng). Hãy thử đặt fill_value=0 hoặc một số thực phù hợp khác.

Các vấn đề liên quan