レッスンの概要

レッスンの概要#

import pyvista as pv
from pyvista import examples

mesh = pv.Wavelet()

add_mesh#

プロットする場合,ユーザーはまず pyvista.Plotter のインスタンスを作成する必要があります(Matplotlib の図形のようなものです).それから, pyvista.Plotter.add_mesh() メソッドを通して,プロッタのインスタンスにデータを追加します.このワークフローは,典型的には次のようになります.

a lesson figures

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

p = pv.Plotter()
p.add_mesh(mesh, cmap="coolwarm")
p.show()
a lesson figures

また, show_edges でメッシュのエッジを表示することもできます.

p = pv.Plotter()
p.add_mesh(mesh, show_edges=True)
p.show()
a lesson figures

また, opacity 引数で不透明度をスカラー値や線形伝達関数に調整することもできます.

mesh = examples.download_st_helens().warp_by_scalar()

p = pv.Plotter()
p.add_mesh(mesh, cmap="terrain", opacity="linear")
p.show()
a lesson figures

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()
a lesson figures

サブプロット#

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

a lesson figures

以下は,1つのデータセットのコンターとスライスを並べて比較した例です.

Tip

両方のビューのカメラをリンクさせるには pyvista.Plotter.link_views() メソッドを使用します.

a lesson figures

軸と境界#

軸は pyvista.Plotter.show_axes() を使ってシーンに追加することができます.

mesh = examples.load_random_hills()

p = pv.Plotter()
p.add_mesh(mesh)
p.show_axes()
p.show()
a lesson figures

境界線も同様に pyvista.Plotter.show_bounds() で表示されます.

Tip

詳しくは Plotting Bounds を参照してください.

a lesson figures
Open In Colab

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

Sphinx-Galleryによるギャラリー