注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
共通フィルタの使用#
閾値設定やクリッピングなどの一般的なフィルタを使用します.
import pyvista as pv
from pyvista import examples
PyVistaラップされたデータオブジェクトには,オブジェクト上で直接使用できるように,一連の共通フィルタが用意されています.これらのフィルタには,次のものがあります(完全なリストについては フィルタ を参照).
slice
: ユーザ定義平面上の入力データセットから単一のスライスを作成します.slice_orthogonal
: 3つの直交スライスのMultiBlock
データセットを作成するslice_along_axis
: creates aMultiBlock
dataset of many slices along a specified axisthreshold
: 単一の値または値の範囲によるデータセットの閾値threshold_percent
: スカラー範囲のパーセンテージによる閾値clip
: ユーザ定義平面によってデータセットをクリップしますoutline_corners
: データ範囲の隅のアウトラインを表示します.extract_geometry
: サーフェスジオメトリを抽出する
これらのフィルタを使用するには,データ・オブジェクトで選択したメソッドを直接呼び出します.
dataset = examples.load_uniform()
dataset.set_active_scalars("Spatial Point Data")
# Apply a threshold over a data range
threshed = dataset.threshold([100, 500])
outline = dataset.outline()
これで,新しい threshed
オブジェクトに入力データセットの閾値が設定されたバージョンがあります.フィルタの実行方法を変更するためにどのようなキーワード引数を使用できるかを調べるには, help(dataset.threshold)
またはIPython環境で shift+tab
を使用してPyVistaオブジェクトに付加されたフィルタのdocstringを出力します.
このフィルタ処理されたデータセットを,元のデータセットのアウトラインに沿ってプロットできるようになりました.
p = pv.Plotter()
p.add_mesh(outline, color="k")
p.add_mesh(threshed)
p.camera_position = [-2, 5, 3]
p.show()
他のフィルターはどうですか?いくつかのフィルタ結果を収集して比較してみましょう.
contours = dataset.contour()
slices = dataset.slice_orthogonal()
glyphs = dataset.glyph(factor=1e-3, geom=pv.Sphere())
p = pv.Plotter(shape=(2, 2))
# Show the threshold
p.add_mesh(outline, color="k")
p.add_mesh(threshed, show_scalar_bar=False)
p.camera_position = [-2, 5, 3]
# Show the contour
p.subplot(0, 1)
p.add_mesh(outline, color="k")
p.add_mesh(contours, show_scalar_bar=False)
p.camera_position = [-2, 5, 3]
# Show the slices
p.subplot(1, 0)
p.add_mesh(outline, color="k")
p.add_mesh(slices, show_scalar_bar=False)
p.camera_position = [-2, 5, 3]
# Show the glyphs
p.subplot(1, 1)
p.add_mesh(outline, color="k")
p.add_mesh(glyphs, show_scalar_bar=False)
p.camera_position = [-2, 5, 3]
p.link_views()
p.show()
/home/runner/work/pyvista-docs-dev-ja/pyvista-docs-dev-ja/pyvista-doc-translations/pyvista/pyvista/core/filters/data_set.py:2320: UserWarning: No vector-like data to use for orient. orient will be set to False.
warnings.warn("No vector-like data to use for orient. orient will be set to False.")
フィルタパイプライン#
VTKでは,フィルタがパイプラインで使用されることが多く,各アルゴリズムはその出力を次のフィルタリング・アルゴリズムに渡します.PyVistaでは,次のようにしてフィルタリングパイプラインを模倣できます.各フィルタを最後のフィルタにアタッチします.次の例では,複数のフィルタが連結されています.
まず,
threshold
フィルタを空にして,NaN
値をすべて消去します.elevation
フィルタを使用して,高さに対応するスカラー値を生成します.clip
フィルタを使用して,データセットを半分にカットします.slice_orthogonal
フィルタを使用して,各軸平面に沿ってスライスを3つ作成します.
# Apply a filtering chain
result = dataset.threshold().elevation().clip(normal="z").slice_orthogonal()
フィルタリングされたデータを表示するには, plot
メソッド (result.plot()
) を呼び出すか,レンダリングシーンを作成します.
p = pv.Plotter()
p.add_mesh(outline, color="k")
p.add_mesh(result, scalars="Elevation")
p.view_isometric()
p.show()
Total running time of the script: (0 minutes 7.538 seconds)