GIFムービーの作成#

アクティブなプロッタから動くgifを生成します.

注釈

特にスカラーバーでは,"jittery" な GIF を避けるために,lighting=False を使って色空間のサイズを小さくしてください.

import numpy as np

import pyvista as pv

構造化グリッドの作成#

構造化されたグリッドを作成し,原点からのデカルト距離に基づいてZ位置をシフトする "波" を作ります.

x = np.arange(-10, 10, 0.5)
y = np.arange(-10, 10, 0.5)
x, y = np.meshgrid(x, y)
r = np.sqrt(x**2 + y**2)
z = np.sin(r)

# Create and structured surface
grid = pv.StructuredGrid(x, y, z)
grid["Height"] = z.ravel()
grid.plot()
gif

GIFを生成する#

off_screen=True パラメータを使用してGIFを生成します.

# Create a plotter object and set the scalars to the Z height
plotter = pv.Plotter(notebook=False, off_screen=True)
plotter.add_mesh(
    grid,
    scalars="Height",
    lighting=False,
    show_edges=True,
    clim=[-1, 1],
)

# Open a gif
plotter.open_gif("wave.gif")

# Update Z and write a frame for each updated position
nframe = 15
for phase in np.linspace(0, 2 * np.pi, nframe + 1)[:nframe]:
    z = np.sin(r + phase)
    # Update values inplace
    grid.points[:, -1] = z.ravel()
    grid["Height"] = z.ravel()
    # Write a frame. This triggers a render.
    plotter.write_frame()

# Closes and finalizes movie
plotter.close()
gif

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

Sphinx-Galleryによるギャラリー