注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
クリップボリュームウィジェット#
pyvista.ImageData
や pyvista.RectilinearGrid
のような構造化されたデータセットでは, pyvista.Plotter.add_volume_clip_plane()
ウィジェットを使ってデータセットを切り取って,内部構造をより良く確認できるようにすることができます.
データセットの作成#
寸法 (200, 200, 200)
の密な pyvista.ImageData
を作成し,アクティブスカラーをグリッドの center
からの距離として設定します.
import numpy as np
import pyvista as pv
grid = pv.ImageData(dimensions=(200, 200, 200))
grid['scalars'] = np.linalg.norm(grid.center - grid.points, axis=1)
grid
不透明度配列の生成#
データセットがある値で "輪" を示すような,帯状の不透明度配列を作成します.高い値(中心から遠い値)がより不透明になるように増加させます.
opacity = np.zeros(100)
opacity[::10] = np.geomspace(0.01, 0.75, 10)
単一クリッププレーンデータセットのプロット#
単一のクリッププレーンでボリュームをプロットします.
不透明度の配列を反転させ,中心に近い部分がより不透明になるようにします.
複数のクリッププレーンをプロットする#
pyvista.Plotter.add_volume_clip_plane()
による出力で,データセットをプロットします. interaction_event
を 'always'
に設定して,一定のインタラクションを有効にします.
プロットをもう少しわかりやすくするために矢印を無効にし,不透明度の配列を反転させます.
pl = pv.Plotter()
vol = pl.add_volume(grid, opacity=opacity)
vol.prop.interpolation_type = 'linear'
pl.add_volume_clip_plane(
vol,
normal='-x',
interaction_event='always',
normal_rotation=False,
)
pl.add_volume_clip_plane(
vol,
normal='-y',
interaction_event='always',
normal_rotation=False,
)
pl.show()
Total running time of the script: (0 minutes 15.400 seconds)