pyvista.Plotter.add_mesh

pyvista.Plotter.add_mesh#

Plotter.add_mesh(
mesh,
color=None,
style=None,
scalars=None,
clim=None,
show_edges=None,
edge_color=None,
point_size=None,
line_width=None,
opacity=None,
flip_scalars=False,
lighting=None,
n_colors=256,
interpolate_before_map=None,
cmap: ColormapOptions | list[str] | LookupTable | None = None,
label=None,
reset_camera=None,
scalar_bar_args=None,
show_scalar_bar=None,
multi_colors=False,
name=None,
texture=None,
render_points_as_spheres=None,
render_lines_as_tubes=None,
smooth_shading=None,
split_sharp_edges=None,
ambient=None,
diffuse=None,
specular=None,
specular_power=None,
nan_color=None,
nan_opacity=1.0,
culling=None,
rgb=None,
categories=False,
silhouette=None,
use_transparency=False,
below_color=None,
above_color=None,
annotations=None,
pickable=True,
preference='point',
log_scale=False,
pbr=None,
metallic=None,
roughness=None,
render=True,
user_matrix=None,
component=None,
emissive=None,
copy_mesh=False,
backface_params=None,
show_vertices=None,
edge_opacity=None,
**kwargs,
) Actor[ソース]#

PyVistaがシーンにラップできるPyVista/VTKメッシュまたはデータセットを追加します.

この方法では,メッシュ表現を使用して,データセットのサーフェスやジオメトリを表示します.ボリュームレンダリングについては pyvista.Plotter.add_volume() を参照.

以下のパラメータのほとんどがどのようなものであるかは, pyvista.Property を参照してください.

パラメータ:
meshpyvista.DataSet or pyvista.MultiBlock か vtk.vtkAlgorithm

Any PyVista or VTK mesh is supported. Also, any dataset that pyvista.wrap() can handle including NumPy arrays of XYZ points. Plotting also supports VTK algorithm objects (vtk.vtkAlgorithm and vtk.vtkAlgorithmOutput). When passing an algorithm, the rendering pipeline will be connected to the passed algorithm to dynamically update the scene (see VTKアルゴリズムでプロットする for examples).

colorColorLike, optional

メッシュ全体を単一のソリッドカラーにします.文字列,RGBリスト,または16進カラー文字列.例: color='white'color='w'color=[1.0, 1.0, 1.0]color='#FFFFFF' .スカラーが指定されている場合,色は上書きされます.

デフォルトは pyvista.global_theme.color です.

stylestr, optional

メッシュの表示スタイル. style='surface'style='wireframe'style='points', style='points_gaussian' のいずれかです.デフォルトは 'surface' です. 'wireframe' は外部ジオメトリのワイヤフレームのみを表示することに注意してください. 'points_gaussian'emissive, render_points_as_spheres オプションで変更することができます.

scalarsstr | numpy.ndarray, optional

メッシュの "色" に使用されるスカラー.メッシュ上に存在する配列の文字列名,またはメッシュ内のセル数または点の数と等しい配列を受け入れます.配列は単一のベクトルとしてサイズを設定する必要があります. colorscalars が両方 None の場合,アクティブスカラーが使用されます.

climsequence[float], optional

スカラーの2項目カラーバーの範囲.デフォルトはスカラー配列の最小値と最大値です.例: [-1, 2]rng もこの別名として認められています.

show_edgesbool, optional

メッシュのエッジを表示します.ワイヤフレーム表示には適用されません.

edge_colorColorLike, optional

show_edges=True の場合にエッジに適用される単色です.文字列,RGBリスト,または16進カラー文字列.

デフォルトは pyvista.global_theme.edge_color です.

point_sizefloat, optional

プロットされたデータセット内の任意のノードのポイントサイズ. style='points' の場合にも適用できます.デフォルト 5.0

line_widthfloat, optional

線の太さ.ワイヤフレーム表示とサーフェス表示にのみ有効です.デフォルトは None です.

opacityfloat | str| array_like

メッシュの不透明度.単一のfloat値を指定した場合,それはメッシュのグローバル不透明度になり,すべての場所に均一に適用されます.0から1の間である必要があります.文字列を指定して,スカラー範囲を定義済みの不透明度転送関数(オプションには, 'linear', 'linear_r', 'geom', 'geom_r' があります.)にマップすることもできます.文字列を使用して,スカラー配列をメッシュから不透明度にマップすることもできます( scalars 引き数と同じ数の要素がなければなりません).または,長さが n_colors 以下の配列であるカスタムメイドの転送関数を渡すこともできます.

flip_scalarsbool, default: False

cmapの方向を反転します.ほとんどのカラーマップでは, *_r サフィックスも同様にこれを行うことができます.

lightingbool, optional

ビュー方向の照明を有効または無効にします.デフォルトは False です.

n_colorsint, optional

スカラーを表示するときに使用するカラーの数.デフォルトは256です.スカラーバーにもこの数の色があります.

interpolate_before_mapbool, optional

有効にすると,より滑らかなスカラー表示になります.デフォルトは True です. False の場合,OpenGLはマップされたカラーを補間し,カラーマップに存在しないカラーを表示することがあります.

cmapstr | list | pyvista.LookupTable, default: pyvista.plotting.themes.Theme.cmap

If a string, this is the name of the matplotlib colormap to use when mapping the scalars. See Named Colormaps for supported colormaps.

Only applicable for when displaying scalars. colormap is also an accepted alias for this. If colorcet or cmocean are installed, their colormaps can be specified by name.

また,色のリストを指定して,既存のカラーマップをカスタムカラーマップで上書きすることもできます.例えば,3色のカラーマップを作成するには, ['green', 'red', 'blue']

このパラメータには pyvista.LookupTable を指定することもできます.このパラメータが設定されている場合, n_colors のようなカラーマップを制御するすべてのパラメータは無視されます.

labelstr, optional

pyvista.Plotter.add_legend() でシーンに凡例を追加するときに使用する文字列ラベル.

reset_camerabool, optional

このメッシュをシーンに追加した後,カメラをリセットします.デフォルトの設定は None で,このプロッタがすでに表示されている場合のみ,カメラがリセットされます. False の場合は,プロッターの状態に関係なく,カメラはリセットされません. True の場合,カメラは常にリセットされます.

scalar_bar_argsdict, optional

スカラーバーをシーンに追加するときに渡すキーワード引数のディクショナリ.オプションについては pyvista.Plotter.add_scalar_bar() を参照してください.

show_scalar_barbool, optional

False の場合,スカラーバーはシーンに追加されません.

multi_colorsbool | str | cycler.Cycler | sequence[ColorLike], default: False

pyvista.MultiBlock データセットが与えられると,カスタムサイクラーを使って各ブロックを単色で塗りつぶします.

もし True なら,デフォルトの 'matplotlib' カラーサイクラーが使用されます.

カスタムカラーサイクラーの使用法については set_color_cycler を参照.

namestr, optional

簡単に更新できるように,追加したメッシュ/アクターの名前.この名前のアクターがレンダリングウィンドウに既に存在する場合は,新しいアクターに置き換えられます.

texturepyvista.Texture or np.ndarray, optional

入力メッシュにテクスチャ座標がある場合に適用されるテクスチャです. これはMultiBlockデータセットでは動作しません.

render_points_as_spheresbool, optional

点をドットではなく球としてレンダリングします.

render_lines_as_tubesbool, optional

線分をフラットな線分ではなく太いチューブとして表示します. line_width で幅を制御します.

smooth_shadingbool, optional

Phongシェーディングアルゴリズムを使用した True 時にスムーズシェーディングを有効にします. False 時にはフラットシェーディングを使用します. pbr=True 時に自動的に有効になります. シェーディングのタイプ を参照してください.

split_sharp_edgesbool, optional

スムーズシェーディングでプロットする際に,30度を超えるシャープエッジを分割します. オプションのキーワード引数 feature_angle で角度を制御します. グローバルテーマやプロッタテーマで上書きされない限りはデフォルトではこれは False です. これを有効にすると,プロッタ内に入力メッシュのコピーが作成されることに注意してください. シェーディングのタイプ を参照してください.

ambientfloat, optional

照明が有効な場合,これは,ビューアから放射された光源に向けられていないときにアクターに到達する0から1の範囲(デフォルトは0.0)の光の量です.

diffusefloat, optional

拡散照明係数.デフォルト1.0.

specularfloat, optional

鏡面反射光の係数.デフォルト0.0.

specular_powerfloat, optional

鏡面パワー.0.0から128.0.

nan_colorColorLike, optional

プロットされたスカラー配列のすべての NaN 値に使用する色.

nan_opacityfloat, optional

NaN 値の不透明度.0から1の間でなければなりません.デフォルトは1.0です.

cullingstr, optional

選択された面はレンダリングされません.オプションは 'front' または 'back' です.これは,高密度のサーフェイスメッシュ,特にエッジが表示されている場合に便利ですが,フラットメッシュが部分的に表示されることがあります.デフォルトは False です.

rgbbool, optional

スカラーとして2次元の配列が渡された場合には,それらの値をRGB(A)カラーとしてプロットします. rgba という別名もあります. Opacity (A) はオプションです. もしも "_rgba" で終わるスカラー配列が渡された場合,デフォルトでは True になります. これは,このパラメータに False を設定することで上書きすることができます.

categoriesbool, optional

True に設定すると,スカラー配列内の一意の値の数が n_colors 引数として使用されます.

silhouettedict, bool, optional

True に設定されている場合,メッシュのシルエットハイライトをプロットします.この機能は,3角形化された PolyData でのみ使用できます. dict として,表示するシルエットのプロパティが含まれています.

  • color: ColorLike ,シルエットの色

  • line_width: float ,エッジ幅

  • opacity: 0から1の float ,エッジ透過性

  • feature_angle: float の場合は,角度を超える鋭いエッジを度単位で表示します.

  • decimate: 0から1の float ,間引きレベル

use_transparencybool, optional

不透明度マッピングを反転し,値を透明度に対応させます.

below_colorColorLike, optional

スカラー範囲 ( clim ) 未満の値の単色.これにより,スカラーバー below_label が自動的に 'below' に設定されます.

above_colorColorLike, optional

スカラー範囲 ( clim ) 未満の値の単色.これにより,スカラーバー above_label が自動的に 'above' に設定されます.

annotationsdict, optional

注釈の辞書を渡します.キーはスカラー範囲のfloat値で,スカラーバーに注釈を付けます.値は文字列注釈です.

pickablebool, optional

このアクターを選択可能にするかどうかを設定します.

preferencestr, default: "point"

mesh.n_points == mesh.n_cells でスカラを設定した場合,このパラメータはスカラがどのようにメッシュにマッピングされるかを設定します. デフォルトの 'point' では,スカラーはメッシュのポイントに関連付けられます. これは 'point' または 'cell' のいずれかです.

log_scalebool, default: False

データを色にマッピングするときは,ログスケールを使用します.0未満のスカラーは,表現可能な最小の正のfloatにマップされます.

pbrbool, optional

メッシュが PolyData の場合,Physics Based Rendering(PBR)を有効にします. color 引数を使用してベースカラーを設定します.

metallicfloat, optional

通常,この値は実際のマテリアルでは0または1ですが,中間の値は有効です.このパラメータはPBR補間でのみ使用されます.

roughnessfloat, optional

この値は,0(光沢)と1(粗さ)の間である必要があります.光沢のあるマテリアルには,反射と高い鏡面反射部分があります.このパラメータは,PBR補間でのみ使用されます.

renderbool, default: True

True のときに強制的にレンダーします.

user_matrixnp.ndarray | vtk.vtkMatrix4x4, default: np.eye(4)

レンダリング前に Actor クラスに渡される行列.これはアクタ/レンダリングのみに影響し,入力ボリューム自体には影響しません.ユーザ行列は,レンダリング前にアクタに適用される最後の変換です.デフォルトは単位行列です.

componentint, optional

Set component of vector valued scalars to plot. Must be nonnegative, if supplied. If None, the magnitude of the vector is plotted. See プロットベクトルコンポーネント for examples.

emissivebool, optional

ポイント/スプラットを発光する光源として扱います. style='points_gaussian' の表現にのみ有効です.

copy_meshbool, default: False

True の場合,プロッタに追加する前にメッシュのコピーが作成されます.これは例えば,同じメッシュを複数回プロッタに追加して,異なるスカラーを表示させたい場合に便利です. copy_meshFalse に設定すると,プロッタに追加した後にメッシュを更新し,例えばアクティブなスカラーを変更したり,インタラクティブウィジェットを介してレンダリングさせたい場合に必要とされます.デフォルトでは False に設定されています.これは注意して True に設定する必要があります.デフォルトは False です.入力が vtkAlgorithm のサブクラスである場合,この設定は無視されます.

backface_paramsdict | pyvista.Property, optional

バックフェイスレンダリングに使用する pyvista.Property またはパラメータの dict を指定します.例えば,オリエンテッドなサーフェスの内側と外側で異なる色を使用する場合に便利です. pyvista.Property を指定した場合は,バックフェイスレンダリングに直接使用されます.dictの場合,有効なキーは pyvista.Property の属性で,値は与えられたプロパティに使用する対応する値です.省略されたキー(またはデフォルトの backface_params=None )は,対応するフロントフェイスのプロパティをデフォルトで使用します.

show_verticesbool, optional

style'points' でない場合,表面の外側の頂点をレンダリングします.以下のオプションのキーワード引数を使用すると,頂点のスタイルを制御することができます.

  • vertex_color - 頂点の色

  • vertex_style - スタイルを 'points_gaussian' に変更します.

  • vertex_opacity - 頂点の不透明度を制御します.

See 可視頂点 for examples.

edge_opacityfloat, optional

メッシュのエッジの不透明度.メッシュのエッジの不透明度をグローバルに適用し,どこでも一様に適用される単一の浮動小数点値です. - 0と1の間でなければなりません.

注釈

edge_opacitySetEdgeOpacity を基礎メソッドとして使用し,VTKバージョン9.3以降を必要とします.もし SetEdgeOpacity が利用できない場合, edge_opacity` は 1 に設定されます.

**kwargsdict, optional

オプションのキーワード引数.

戻り値:
pyvista.Actor

メッシュのアクター.

プロッタに球を追加し,カスタムのスカラーバータイトルで表示します.

>>> import pyvista as pv
>>> sphere = pv.Sphere()
>>> sphere['Data'] = sphere.points[:, 2]
>>> plotter = pv.Plotter()
>>> _ = plotter.add_mesh(sphere, scalar_bar_args={'title': 'Z Position'})
>>> plotter.show()
../../../_images/pyvista-Plotter-add_mesh-1_00_00.png

1つのセルにRGBを使ってプロットします. なお,点の数とセル数は同じなので, preference='cell' を渡す必要があります.

>>> import pyvista as pv
>>> import numpy as np
>>> vertices = np.array(
...     [
...         [0, 0, 0],
...         [1, 0, 0],
...         [0.5, 0.667, 0],
...         [0.5, 0.33, 0.667],
...     ]
... )
>>> faces = np.hstack([[3, 0, 1, 2], [3, 0, 3, 2], [3, 0, 1, 3], [3, 1, 2, 3]])
>>> mesh = pv.PolyData(vertices, faces)
>>> mesh.cell_data['colors'] = [
...     [255, 255, 255],
...     [0, 255, 0],
...     [0, 0, 255],
...     [255, 0, 0],
... ]
>>> plotter = pv.Plotter()
>>> _ = plotter.add_mesh(
...     mesh,
...     scalars='colors',
...     lighting=False,
...     rgb=True,
...     preference='cell',
... )
>>> plotter.camera_position = 'xy'
>>> plotter.show()
../../../_images/pyvista-Plotter-add_mesh-1_01_00.png

これが preference=='point' とどう違うかに注意してください. これは, preference=='point' では各セル面が個別に色付けされているのに対し,各ポイントが個別に色付けされているからです.

>>> plotter = pv.Plotter()
>>> _ = plotter.add_mesh(
...     mesh,
...     scalars='colors',
...     lighting=False,
...     rgb=True,
...     preference='point',
... )
>>> plotter.camera_position = 'xy'
>>> plotter.show()
../../../_images/pyvista-Plotter-add_mesh-1_02_00.png

平面を一定の色でプロットし,その不透明度をポイントごとに変化させます.

>>> plane = pv.Plane()
>>> plane.plot(
...     color='b',
...     opacity=np.linspace(0, 1, plane.n_points),
...     show_edges=True,
... )
../../../_images/pyvista-Plotter-add_mesh-1_03_00.png

球体の点をz位置で色付けしながらGaussianスムージングでプロットします.

>>> mesh = pv.Sphere()
>>> mesh.plot(
...     scalars=mesh.points[:, 2],
...     style='points_gaussian',
...     opacity=0.5,
...     point_size=10,
...     render_points_as_spheres=False,
...     show_scalar_bar=False,
... )
../../../_images/pyvista-Plotter-add_mesh-1_04_00.png

points_gaussian スタイルで球体をプロットし,半径でスケーリングします.

>>> N_SPHERES = 1_000_000
>>> rng = np.random.default_rng(seed=0)
>>> pos = rng.random((N_SPHERES, 3))
>>> rad = rng.random(N_SPHERES) * 0.01
>>> pdata = pv.PolyData(pos)
>>> pdata['radius'] = rad
>>> pdata.plot(
...     style='points_gaussian',
...     emissive=False,
...     render_points_as_spheres=True,
... )
../../../_images/pyvista-Plotter-add_mesh-1_05_00.png