pyvista.PointSet.threshold

pyvista.PointSet.threshold#

PointSet.threshold(
value: float | VectorLike[float] | None = None,
scalars: str | None = None,
invert: bool = False,
continuous: bool = False,
preference: Literal['point', 'cell'] = 'cell',
all_scalars: bool = False,
component_mode: Literal['component', 'all', 'any'] = 'all',
component: int = 0,
method: Literal['upper', 'lower'] = 'upper',
progress_bar: bool = False,
)[ソース]#

入力データセットに vtkThreshold フィルタを適用します.

このフィルタは vtkThreshold フィルタを入力データセットに適用し,結果のオブジェクトを返します.各セルのスカラー値が閾値の基準を満たすセルを抽出します. scalarsNone の場合,アクティブスカラー配列が使用されます.

警告

閾値処理は,セルを維持するかどうかを決定するために関連する点データを使用できるにもかかわらず,本質的にセル操作です.つまり,ある点が閾値処理後に含まれるかどうかは,その点が閾値処理後に保持されるセルの一部であるかどうかに依存します.

また,デフォルトの preference では,POINT データよりも CELL データが選択されていることに注意してください.これは,PyVistaのAPIの他のほとんどの場所で,通常POINTデータが優先されるのに反しています.POINTデータとCELLデータの両方に存在する名前付き配列で閾値を設定すると,CELL単位の演算を行う際にCELLデータの配列がデフォルトになるように,ここではCELLデータを優先することにしました.

パラメータ:
valuefloat | sequence[float], optional

データ閾値に使用する単一の値または (min, max) .シーケンスの場合,長さは2にする必要があります.値を指定しない場合,NaN以外のデータ範囲を使用してNaN値が削除されます.単一の値がどのように扱われるかについては, method パラメータを参照してください.

scalarsstr, optional

閾値に対するスカラーの名前.デフォルトは現在アクティブなスカラーです.

invertbool, default: False

閾値の結果を反転させます.つまり,このオプションをオフにした場合,出力に含まれるはずだったセルは除外され,出力から除外されるはずだったセルは含まれる.

continuousbool, default: False

Trueの場合,頂点からの離散スカラー値のセットではなく,連続間隔[最小セルスカラー,最大セルスカラー]が閾値境界との交差に使用されます.

preferencestr, default: 'cell'

scalars が指定された場合,データセットから検索する際に優先される配列の種類を指定します. 'point' または 'cell' のどちらかを指定する必要があります.PyVistaでは通常 'point' が優先されるが,閾値フィルタはセル単位の操作であるため,閾値処理ではセルのデータを優先する.

all_scalarsbool, default: False

点データを使用する場合,この値が True のときは,セル内のすべての点のすべてのスカラーが閾値を満たす必要があります. False のときは,閾値の基準を満たすスカラー値を持つセルの任意の点がセルを抽出します.セルデータ使用時には効果がありません.

component_mode{'component', 'all', 'any'}

The method to satisfy the criteria for the threshold of multicomponent scalars. 'component' (default) uses only the component. 'all' requires all components to meet criteria. 'any' is when any component satisfies the criteria.

componentint, default: 0

When using component_mode='component', this sets which component to threshold on.

methodstr, default: 'upper'

単一の値に対する threshold メソッドを設定し,使用する threshold の境界を定義します.もし value が範囲指定されている場合,このパラメータは無視され,2つの値の間のデータが抽出されます.単一の値の場合, 'lower'value よりも低いデータを抽出します. 'upper'value よりも大きなデータを取り出します.

progress_barbool, default: False

進行状況を示す進行状況バーを表示します.

戻り値:
pyvista.UnstructuredGrid

閾値要件を満たすジオメトリを含むデータセット.

>>> import pyvista as pv
>>> import numpy as np
>>> volume = np.zeros([10, 10, 10])
>>> volume[:3] = 1
>>> vol = pv.wrap(volume)
>>> threshed = vol.threshold(0.1)
>>> threshed
UnstructuredGrid (...)
  N Cells:    243
  N Points:   400
  X Bounds:   0.000e+00, 3.000e+00
  Y Bounds:   0.000e+00, 9.000e+00
  Z Bounds:   0.000e+00, 9.000e+00
  N Arrays:   1

Perlinノイズに閾値フィルターを適用します.まず,構造格子を生成します.

>>> import pyvista as pv
>>> noise = pv.perlin_noise(0.1, (1, 1, 1), (0, 0, 0))
>>> grid = pv.sample_function(
...     noise, [0, 1.0, -0, 1.0, 0, 1.0], dim=(20, 20, 20)
... )
>>> grid.plot(
...     cmap='gist_earth_r',
...     show_scalar_bar=True,
...     show_edges=False,
... )
../../../_images/pyvista-PointSet-threshold-1_00_00.png

次に,閾値を適用します.

>>> import pyvista as pv
>>> noise = pv.perlin_noise(0.1, (1, 1, 1), (0, 0, 0))
>>> grid = pv.sample_function(
...     noise, [0, 1.0, -0, 1.0, 0, 1.0], dim=(20, 20, 20)
... )
>>> threshed = grid.threshold(value=0.02)
>>> threshed.plot(
...     cmap='gist_earth_r',
...     show_scalar_bar=False,
...     show_edges=True,
... )
../../../_images/pyvista-PointSet-threshold-1_01_00.png

このフィルターを使用したその他の例については, 共通フィルタの使用 を参照してください.