2013-10-07 28 views
0

我想在mayavi的文檔中找到一些提示,但沒有任何成功。在mayavi中刪除部分iso_surface

在複雜數據的可視化中,我想刪除一部分計算的iso_surface。 例如,我有一個像

field = mlab.pipeline.gaussian_splatter(data) 
iso = mlab.pipeline.iso_surface(field, contours=[0.07]) 

代碼我可以通過明確解釋通過執行類似

field.filter.model_bounds = array([-1., 1., -1., 1., -1., 1.]) 

但我不能說我的數據沿X,Y或Z的限制刪除此iso_surface的一部分沒有找到解決這個問題的方法來處理任意定向飛機。例如,我想限制我的數據爲(1,1,1)方向。

有沒有辦法做到這一點?

回答

0

如果你有顯示你想要的表面異常,嘗試玩弄的contours的說法,如果你可以讓他們你希望顯示你應該得到你想要的表面周圍夠緊..

,如果你可以張貼一些更多的是{非,}工作示例中,我也許可以幫忙

1

您可以使用data_set_clipper 夾中的數據。裁剪器是交互式或非交互式。我將證明它對於非交互式版本:

fld = mlab.pipeline.scalar_field(data) 
clip = mlab.pipeline.data_set_clipper(fld) 
clip.widget.widget_mode='ImplicitPlane' 
clip.widget.widget.enabled=0 
clip.widget.widget.normal=(1,1,1) 
clip.widget.widget.origin=(20,20,20) #(0,0,0) is not the centre but the corner 
iso = mlab.pipeline.iso_surface(clip, contours=[0.07]) 

如果你想更多的時候,你必須把你的截取的數據到另一個data_set_clippe夾:

clip2=mlab.pipeline.data_set_clipper(clip) 

不過,我並不完全滿意我的方法,因爲它使用了大量的資源。如果有人有更好的解決方案,我會很高興看到它。