共通フィルタの使用#

閾値設定やクリッピングなどの一般的なフィルタを使用します.

import pyvista as pv
from pyvista import examples

PyVistaラップされたデータオブジェクトには,オブジェクト上で直接使用できるように,一連の共通フィルタが用意されています.これらのフィルタには,次のものがあります(完全なリストについては フィルタ を参照).

  • slice: ユーザ定義平面上の入力データセットから単一のスライスを作成します.

  • slice_orthogonal: 3つの直交スライスの MultiBlock データセットを作成する

  • slice_along_axis: creates a MultiBlock dataset of many slices along a specified axis

  • threshold: 単一の値または値の範囲によるデータセットの閾値

  • 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()
using filters

他のフィルターはどうですか?いくつかのフィルタ結果を収集して比較してみましょう.

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()
using filters
/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では,次のようにしてフィルタリングパイプラインを模倣できます.各フィルタを最後のフィルタにアタッチします.次の例では,複数のフィルタが連結されています.

  1. まず, threshold フィルタを空にして, NaN 値をすべて消去します.

  2. elevation フィルタを使用して,高さに対応するスカラー値を生成します.

  3. clip フィルタを使用して,データセットを半分にカットします.

  4. 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()
using filters

Total running time of the script: (0 minutes 7.538 seconds)

Sphinx-Galleryによるギャラリー