プロット#
VTKでインタラクティブレンダリングウィンドウを使用してプロットする場合,次のキーボードショートカットを使用できます.
キー |
アクション |
|
---|---|---|
Linux/Windows |
Mac |
|
|
レンダリングウィンドウを閉じる |
|
|
点に焦点を合わせて拡大します |
|
|
アイソメトリックカメラビュー |
|
|
すべてのデータセットを ワイヤフレーム 表現に切り替える |
|
|
カメラをリセットしてすべてのデータセットを表示する |
|
|
すべてのデータセットを 表面 表現に切り替える |
|
|
|
レンダリングシーンをパンする |
|
|
レンダリングシーンを3 Dで回転する |
|
レンダリングシーンを2 Dで回転する (ビュープレーン) |
|
|
|
レンダリングシーンを継続的にズームする |
|
スクリーンショットを保存する( |
|
|
インタラクティブなセル選択/ピックを有効にする |
|
|
拡大と縮小 |
|
|
ポイントサイズと線幅の増減 |
Jupyterノートブックでのプロット#
静的および対話型インラインプロットは,Jupyterノートブックを使用して行うことができます.以下のコードスニペットは,レンダリングの静的スクリーンショットを作成し,Jupyterノートブックに表示します:
import pyvista as pv
sphere = pv.Sphere()
sphere.plot(jupyter_backend='static')
Plotter
クラスを使用することもできます.
plotter = pv.Plotter(notebook=True)
plotter.add_mesh(sphere)
plotter.show(jupyter_backend='static')
さらに,私たちのjupyterプロッティングバックエンド trame
を活用することで,インタラクティブなプロットを生成することができます.オンラインでインタラクティブなドキュメントを作成するために使用することもできます.
plotter = pv.Plotter(window_size=(600, 400))
plotter.background_color = 'w'
plotter.enable_anti_aliasing()
plotter.add_mesh(sphere, color='lightblue', show_edges=True)
plotter.show(jupyter_backend='static')
詳細については, Jupyterノートブックプロット の項を参照してください.
背景プロッティング#
PyVistaにはプロッタが用意されており,ユーザはバックグラウンドでレンダリングウィンドウを作成できます.このウィンドウは,ユーザが処理を実行している間もインタラクティブなままです.これにより,レンダリングシーンを作成し,シーンに対してインタラクティブにデータセットを追加または削除する機能や,一般的なシーン操作や書き出しタスクに便利なメニュー機能が作成されます.始めるために, pyvistaqt.BackgroundPlotter
のインスタンス化を試してみてください:
import pyvista as pv
import pyvistaqt as pvqt
from pyvista import examples
dataset = examples.load_hexbeam()
p = pvqt.BackgroundPlotter()
p.add_mesh(dataset)
p.show_bounds(grid=True, location='back')
時系列データのプロット#
次の例では,時間の経過とともに空間参照とデータ値が変化するデータをプロットする方法の概要を示します:
from threading import Thread
import time
import numpy as np
import pyvista as pv
import pyvistaqt as pvqt
from pyvista import examples
globe = examples.load_globe()
texture = examples.load_globe_texture()
globe.point_data['scalars'] = np.random.rand(globe.n_points)
globe.set_active_scalars('scalars')
plotter = pvqt.BackgroundPlotter()
plotter.add_mesh(globe, lighting=False, show_edges=True, texture=texture, scalars='scalars')
plotter.view_isometric()
# shrink globe in the background
def shrink():
for i in range(50):
globe.points *= 0.95
# Update scalars
globe.point_data['scalars'] = np.random.rand(globe.n_points)
time.sleep(0.5)
thread = Thread(target=shrink)
thread.start()