プロット#

VTKでインタラクティブレンダリングウィンドウを使用してプロットする場合,次のキーボードショートカットを使用できます.

キー

アクション

Linux/Windows

Mac

q

レンダリングウィンドウを閉じる

f

点に焦点を合わせて拡大します

v

アイソメトリックカメラビュー

w

すべてのデータセットを ワイヤフレーム 表現に切り替える

r

カメラをリセットしてすべてのデータセットを表示する

s

すべてのデータセットを 表面 表現に切り替える

shift+clickmiddle-click

shift+click

レンダリングシーンをパンする

左クリック

cmd+クリック

レンダリングシーンを3 Dで回転する

Ctrl+クリック

レンダリングシーンを2 Dで回転する (ビュープレーン)

マウスホイール または 右クリック

Ctrl+クリック

レンダリングシーンを継続的にズームする

shift+s

スクリーンショットを保存する( BackgroundPlotter のみ)

shift+c

インタラクティブなセル選択/ピックを有効にする

/

拡大と縮小

+/-

ポイントサイズと線幅の増減

Jupyterノートブックでのプロット#

静的および対話型インラインプロットは,Jupyterノートブックを使用して行うことができます.以下のコードスニペットは,レンダリングの静的スクリーンショットを作成し,Jupyterノートブックに表示します:

import pyvista as pv
sphere = pv.Sphere()
sphere.plot(jupyter_backend='static')
../../_images/plotting_0_0.png

Plotter クラスを使用することもできます.

plotter = pv.Plotter(notebook=True)
plotter.add_mesh(sphere)
plotter.show(jupyter_backend='static')
../../_images/plotting_1_0.png

さらに,私たちの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')
../../_images/plotting_2_0.png

詳細については, 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()
../../_images/shrink-globe.gif