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=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=array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]), component=None, emissive=None, copy_mesh=False, backface_params=None, show_vertices=None, edge_opacity=None, **kwargs)[ソース]#
PyVistaがシーンにラップできるPyVista/VTKメッシュまたはデータセットを追加します.
この方法では,メッシュ表現を使用して,データセットのサーフェスやジオメトリを表示します.ボリュームレンダリングについては
pyvista.Plotter.add_volume()
を参照.以下のパラメータのほとんどがどのようなものであるかは,
pyvista.Property
を参照してください.- パラメータ:
- meshpyvista.DataSet or pyvista.MultiBlock か vtk.vtkAlgorithm
あらゆるPyVistaやVTKのメッシュがサポートされています.また,XYZ ポイントの NumPy 配列を含む,
pyvista.wrap()
が扱うことのできる全てのデータセットがサポートされています.プロットは VTK アルゴリズムオブジェクト (vtk.vtkAlgorithm
とvtk.vtkAlgorithmOutput
) もサポートしています.アルゴリズムを渡すと,レンダリングパイプラインは渡されたアルゴリズムに接続され,動的にシーンが更新されます.- color
ColorLike
,optional
メッシュ全体を単一のソリッドカラーにします.文字列,RGBリスト,または16進カラー文字列.例:
color='white'
,color='w'
,color=[1.0, 1.0, 1.0]
,color='#FFFFFF'
.スカラーが指定されている場合,色は上書きされます.デフォルトは
pyvista.global_theme.color
です.- style
str
,optional
メッシュの表示スタイル.
style='surface'
,style='wireframe'
,style='points'
,style='points_gaussian'
のいずれかです.デフォルトは'surface'
です.'wireframe'
は外部ジオメトリのワイヤフレームのみを表示することに注意してください.'points_gaussian'
はemissive
,render_points_as_spheres
オプションで変更することができます.- scalars
str
|numpy.ndarray
,optional
メッシュの "色" に使用されるスカラー.メッシュ上に存在する配列の文字列名,またはメッシュ内のセル数またはポイント数と等しい配列を受け入れます.配列は単一のベクトルとしてサイズを設定する必要があります.
color
とscalars
が両方None
の場合,アクティブスカラーが使用されます.- climsequence[
float
],optional
スカラーの2項目カラーバーの範囲.デフォルトはスカラー配列の最小値と最大値です.例:
[-1, 2]
.rng
もこの別名として認められています.- show_edgesbool,
optional
メッシュのエッジを表示します.ワイヤフレーム表示には適用されません.
- edge_color
ColorLike
,optional
show_edges=True
の場合にエッジに適用される単色です.文字列,RGBリスト,または16進カラー文字列.デフォルトは
pyvista.global_theme.edge_color
です.- point_size
float
,optional
プロットされたデータセット内の任意のノードのポイントサイズ. style='points' の場合にも適用できます.デフォルト
5.0
.- line_width
float
,optional
線の太さ.ワイヤフレーム表示とサーフェス表示にのみ有効です.デフォルトは
None
です.- opacity
float
| 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_colors
int
,optional
スカラーを表示するときに使用するカラーの数.デフォルトは256です.スカラーバーにもこの数の色があります.
- interpolate_before_mapbool,
optional
有効にすると,より滑らかなスカラー表示になります.デフォルトは
True
です.False
の場合,OpenGLはマップされたカラーを補間し,カラーマップに存在しないカラーを表示することがあります.- cmap
str
|list
|pyvista.LookupTable
, default:pyvista.plotting.themes.Theme.cmap
文字列の場合,
scalars
をマッピングする際に利用するmatplotlib
のカラーマップ名です.利用可能なMatplotlibカラーマップを参照してください.scalars
を表示する場合にのみ適用されます.colormap
は,このエイリアスとしても使用できます.colorcet
またはcmocean
がインストールされている場合は,それらのカラーマップを名前で指定できます.また,色のリストを指定して,既存のカラーマップをカスタムカラーマップで上書きすることもできます.例えば,3色のカラーマップを作成するには,
['green', 'red', 'blue']
.このパラメータには
pyvista.LookupTable
を指定することもできます.このパラメータが設定されている場合,n_colors
のようなカラーマップを制御するすべてのパラメータは無視されます.- label
str
,optional
pyvista.Plotter.add_legend()
でシーンに凡例を追加するときに使用する文字列ラベル.- reset_camerabool,
optional
このメッシュをシーンに追加した後,カメラをリセットします.デフォルトの設定は
None
で,このプロッタがすでに表示されている場合のみ,カメラがリセットされます.False
の場合は,プロッターの状態に関係なく,カメラはリセットされません.True
の場合,カメラは常にリセットされます.- scalar_bar_args
dict
,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
を参照.- name
str
,optional
簡単に更新できるように,追加したメッシュ/アクターの名前.この名前のアクターがレンダリングウィンドウに既に存在する場合は,新しいアクターに置き換えられます.
- texture
pyvista.Texture
ornp.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
です. これを有効にすると,プロッタ内に入力メッシュのコピーが作成されることに注意してください. シェーディングのタイプ を参照してください.- ambient
float
,optional
照明が有効な場合,これは,ビューアから放射された光源に向けられていないときにアクターに到達する0から1の範囲(デフォルトは0.0)の光の量です.
- diffuse
float
,optional
拡散照明係数.デフォルト1.0.
- specular
float
,optional
鏡面反射光の係数.デフォルト0.0.
- specular_power
float
,optional
鏡面パワー.0.0から128.0.
- nan_color
ColorLike
,optional
プロットされたスカラー配列のすべての
NaN
値に使用する色.- nan_opacity
float
,optional
NaN
値の不透明度.0から1の間でなければなりません.デフォルトは1.0です.- culling
str
,optional
選択された面はレンダリングされません.オプションは
'front'
または'back'
です.これは,高密度のサーフェイスメッシュ,特にエッジが表示されている場合に便利ですが,フラットメッシュが部分的に表示されることがあります.デフォルトはFalse
です.- rgbbool,
optional
スカラーとして2次元の配列が渡された場合には,それらの値をRGB(A)カラーとしてプロットします.
rgba
という別名もあります. Opacity (A) はオプションです. もしも"_rgba"
で終わるスカラー配列が渡された場合,デフォルトではTrue
になります. これは,このパラメータにFalse
を設定することで上書きすることができます.- categoriesbool,
optional
True
に設定すると,スカラー配列内の一意の値の数がn_colors
引数として使用されます.- silhouette
dict
, 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_color
ColorLike
,optional
スカラー範囲 (
clim
) 未満の値の単色.これにより,スカラーバーbelow_label
が自動的に'below'
に設定されます.- above_color
ColorLike
,optional
スカラー範囲 (
clim
) 未満の値の単色.これにより,スカラーバーabove_label
が自動的に'above'
に設定されます.- annotations
dict
,optional
注釈の辞書を渡します.キーはスカラー範囲のfloat値で,スカラーバーに注釈を付けます.値は文字列注釈です.
- pickablebool,
optional
このアクターを選択可能にするかどうかを設定します.
- preference
str
, 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
引数を使用してベースカラーを設定します.- metallic
float
,optional
通常,この値は実際のマテリアルでは0または1ですが,中間の値は有効です.このパラメータはPBR補間でのみ使用されます.
- roughness
float
,optional
この値は,0(光沢)と1(粗さ)の間である必要があります.光沢のあるマテリアルには,反射と高い鏡面反射部分があります.このパラメータは,PBR補間でのみ使用されます.
- renderbool, default:
True
True
のときに強制的にレンダーします.- user_matrix
np.ndarray
|vtk.vtkMatrix4x4
, default:np.eye
(4) レンダリング前に Actor クラスに渡される行列.これはアクタ/レンダリングのみに影響し,入力ボリューム自体には影響しません.ユーザ行列は,レンダリング前にアクタに適用される最後の変換です.デフォルトは単位行列です.
- component
int
,optional
プロットするベクトル値スカラーのコンポーネントを設定します.指定されている場合は負でない必要があります.
None
の場合,ベクトルの大きさがプロットされます.- emissivebool,
optional
ポイント/スプラットを発光する光源として扱います.
style='points_gaussian'
の表現にのみ有効です.- copy_meshbool, default:
False
True
の場合,プロッタに追加する前にメッシュのコピーが作成されます.これは例えば,同じメッシュを複数回プロッタに追加して,異なるスカラーを表示させたい場合に便利です.copy_mesh
をFalse
に設定すると,プロッタに追加した後にメッシュを更新し,例えばアクティブなスカラーを変更したり,インタラクティブウィジェットを介してレンダリングさせたい場合に必要とされます.デフォルトではFalse
に設定されています.これは注意してTrue
に設定する必要があります.デフォルトはFalse
です.入力がvtkAlgorithm
のサブクラスである場合,この設定は無視されます.- backface_params
dict
|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
- 頂点の不透明度を制御します.
- edge_opacity
float
,optional
メッシュのエッジの不透明度.メッシュのエッジの不透明度をグローバルに適用し,どこでも一様に適用される単一の浮動小数点値です. - 0と1の間でなければなりません.
注釈
edge_opacity は
SetEdgeOpacity
を基礎メソッドとして使用し,VTKバージョン9.3以降を必要とします.もしSetEdgeOpacity
が利用できない場合, edge_opacity` は 1 に設定されます.- **kwargs
dict
,optional
オプションのキーワード引数.
- 戻り値:
pyvista.plotting.actor.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()
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()
これが
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()
平面を一定の色でプロットし,その不透明度をポイントごとに変化させます.
>>> plane = pv.Plane() >>> plane.plot( ... color='b', ... opacity=np.linspace(0, 1, plane.n_points), ... show_edges=True, ... )
球体の点を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, ... )