注釈
完全なサンプルコードをダウンロードしたり、Binderを使ってブラウザでこのサンプルを実行するには、 最後に進んでください 。
レッスンの概要#
import pyvista as pv
from pyvista import examples
mesh = pv.Wavelet()
add_mesh
#
プロットする場合,ユーザーはまず pyvista.Plotter
のインスタンスを作成する必要があります(Matplotlib の図形のようなものです).それから, pyvista.Plotter.add_mesh()
メソッドを通して,プロッタのインスタンスにデータを追加します.このワークフローは,典型的には次のようになります.
p = pv.Plotter()
p.add_mesh(mesh)
p.show()

pyvista.Plotter.add_mesh()
メソッドのパラメータを使用すると,メッシュの表示方法をカスタマイズすることができます.例えば, cmap
引数でカラーマップを変更することができます.
p = pv.Plotter()
p.add_mesh(mesh, cmap="coolwarm")
p.show()

また, show_edges
でメッシュのエッジを表示することもできます.
p = pv.Plotter()
p.add_mesh(mesh, show_edges=True)
p.show()

また, opacity
引数で不透明度をスカラー値や線形伝達関数に調整することもできます.
mesh = examples.download_st_helens().warp_by_scalar()
p = pv.Plotter()
p.add_mesh(mesh, cmap="terrain", opacity="linear")
p.show()

add_mesh のすべてのオプションを見てみましょう.
add_mesh
メソッドは,同じ Plotter
のシーンに異なるデータを追加するために何度も呼び出すことができます.例えば,多くの異なるメッシュオブジェクトを作成し,それらを一緒にプロットすることができます.
kinds = [
"tetrahedron",
"cube",
"octahedron",
"dodecahedron",
"icosahedron",
]
centers = [
(0, 1, 0),
(0, 0, 0),
(0, 2, 0),
(-1, 0, 0),
(-1, 2, 0),
]
solids = [pv.PlatonicSolid(kind, radius=0.4, center=center) for kind, center in zip(kinds, centers)]
p = pv.Plotter(window_size=[1000, 1000])
for _ind, solid in enumerate(solids):
p.add_mesh(solid, color="silver", specular=1.0, specular_power=10)
p.view_vector((5.0, 2, 3))
p.add_floor("-z", lighting=True, color="tan", pad=1.0)
p.enable_shadows()
p.show()

サブプロット#
PyVistaのサブプロットAPIを使えば,データセットを横に並べて比較することも簡単にできます.まず pyvista.Plotter
オブジェクトの形状を指定して,次に pyvista.Plotter.subplot()
メソッドでアクティブなサブプロットを登録します.これは Matplotlib の API でサブプロットを行う方法と同じように行います.
p = pv.Plotter(shape=(1, 2))
p.subplot(0, 0)
p.add_mesh(pv.Sphere())
p.subplot(0, 1)
p.add_mesh(pv.Cube())
p.show()

以下は,1つのデータセットのコンターとスライスを並べて比較した例です.
Tip
両方のビューのカメラをリンクさせるには pyvista.Plotter.link_views()
メソッドを使用します.
mesh = pv.Wavelet()
cntr = mesh.contour()
slices = mesh.slice_orthogonal()
p = pv.Plotter(shape=(1, 2))
p.add_mesh(cntr)
p.subplot(0, 1)
p.add_mesh(slices)
p.link_views()
p.view_isometric()
p.show()

軸と境界#
軸は pyvista.Plotter.show_axes()
を使ってシーンに追加することができます.
mesh = examples.load_random_hills()
p = pv.Plotter()
p.add_mesh(mesh)
p.show_axes()
p.show()

境界線も同様に pyvista.Plotter.show_bounds()
で表示されます.
Tip
詳しくは Plotting Bounds を参照してください.
p = pv.Plotter()
p.add_mesh(mesh)
p.show_axes()
p.show_bounds()
p.show()

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