2015-02-23 7 views
0

У меня есть nx3 массив, позволяет называть его data, где я хочу первые 2 колонки, чтобы быть x и y координаты и 3-й столбец быть z координат, связанной с x и y координаты в той же строки.Поверхностный участок с Matplotlib, Python

Теперь я хочу нарисовать участок поверхности, где поверхность пересекает все координаты z.

Я видел this пост, но не могу понять.

Я знаю, что я могу использовать Matplotlib-х Axes3D и fig.gca(projection='3d') и что она занимает 3 nxn массивы, где я думаю X и Y массивы могут быть получены с X,Y = np.meshgrid(data[:,0],data[:,1]), но я не уверен, как получить nxnZ массив, если есть составляет только 1 Z Координата, связанная с каждым x и y.

Затем я хотел бы сгладить поверхность, так как я уверен, что поверхность с несколькими точками данных будет выглядеть уродливой, и я просто хочу представить общую форму данных, а конкретные значения не слишком важный. Таким образом, есть ли способ интерполировать между точками данных в 2 измерениях, чтобы сгладить график?

Пример набора данных:

data = np.array([[4260,150,116] 
       [4204,149,1070] 
       [4204,188,470] 
       [4444,140,389] 
       [3255,149,69] 
       [6370,149,1109] 
       [5765,189,3531]]) 

ответ

1

Попробуйте так:

x, y, z = data[:,0], data[:,1], data[:,2] 
grid_x, grid_y = np.mgrid[min(x):max(x):50j, min(y):max(y):50j] 
z = griddata((x, y), z, (grid_x, grid_y), method='cubic') 
Смежные вопросы