При построении трехмерной поверхности с использованием функции mlab.surf()
наличие значений Nan
приводит к нечетному построению графика. Любые идеи о том, что я могу делать неправильно, будут оценены.Использование маски с 3D-графикой Mayavi с использованием mlab.surf()
In[37]: import mayavi
In[38]: print mayavi.__version__
4.4.0
from mayavi import mlab
j = np.copy('some 2d-array') # where j is shape (680, 680) and contains Nans
mlab.surf(j)
Если я заменяю пренебрежимо малых с минимальным значением, сюжет выглядит хорошо, но имеет искусственную плоскость вокруг краев, что я хочу обрезанную:
j[np.isnan(j)]=j[~np.isnan(j)].min()
mlab.surf(j) # where j has been set to j.min() where j==np.nan
Если я затем добавлю маску, соответствующую областям, где j==j.min()
, я снова получаю странный вывод (я также пробовал это по crea тин маску непосредственно на массиве до переосмысление пренебрежимо малых):
m = np.ma.masked_where(j==j.min(), j).mask
mlab.surf(j, mask=m)
Спасибо, что нашли время, чтобы ответить на этот старый вопрос. Я попробую это, если у меня появится шанс. – Jason