注釈
完全なサンプルコードをダウンロードしたり、Binderを使ってブラウザでこのサンプルを実行するには、 最後に進んでください 。
均一グリッドを作成#
値の3D NumPy配列から単純な均一グリッドを作成します.
import numpy as np
import pyvista as pv
各軸がXYZデカルト軸に対応する空間データを保持するデータ値の3 D NumPy配列を取ります.この例では,値の3 D NumPy配列をプロットできる3 Dグリッドの空間参照を保持する pyvista.ImageData
を作成します.
空間的に参照されるデータの3 D NumPy配列を作成します.これは,グリッドが (20, 5, 10)
, (nx, ny, nz)
であるように空間的に参照さます.
values = np.linspace(0, 10, 1000).reshape((20, 5, 10))
values.shape
ImageDataの作成
grid = pv.ImageData()
CELLデータに値を注入したいので,グリッドの寸法を shape + 1
に設定します.
grid.dimensions = np.array(values.shape) + 1
空間リファレンスを編集する.
grid.origin = (100, 33, 55.6) # The bottom left corner of the data set
grid.spacing = (1, 5, 2) # These are the cell sizes along each axis
セルデータにデータを代入します. ImageData
オブジェクトのデータは必ずFortranオーダリングを使用して平坦化します.
grid.cell_data["values"] = values.flatten(order="F")
grid
さて,グリッドをプロットしてみましょう!
grid.plot(show_edges=True)
セルデータが嫌いですか?NumPyの配列を pyvista.ImageData
の点データに追加することもできます.初期化時にグリッドの寸法を設定する際に,微妙な違いに注意してください.
# Create the 3D NumPy array of spatially referenced data again.
values = np.linspace(0, 10, 1000).reshape((20, 5, 10))
values.shape
PyVistaオブジェクトを作成し,上記と同じように属性を設定します.
grid = pv.ImageData()
# Set the grid dimensions to ``shape`` because we want to inject our values on
# the POINT data
grid.dimensions = values.shape
# Edit the spatial reference
grid.origin = (100, 33, 55.6) # The bottom left corner of the data set
grid.spacing = (1, 5, 2) # These are the cell sizes along each axis
セルデータにデータ値を追加する
grid.point_data["values"] = values.flatten(order="F") # Flatten the array!
grid
さて,グリッドをプロットしてみましょう!
grid.plot(show_edges=True)
演習#
それでは,3D NumPyの配列から,あなた自身の pyvista.ImageData
を作ってみましょう!
help(pv.ImageData)
numpy.random.random()
を使って3Dデータを生成します.ここでは,ご自分の3D numpy配列を自由に使ってください.
arr = np.random.random((100, 100, 100))
arr.shape
クラス :pyvista.ImageData を作成します.
注釈
おそらく Fortran-ordering で配列を ravel
する必要があります: arr.ravel(order="F")
とします.
vol = pv.ImageData()
# Set attributes and data
ImageDataのプロット
vol.plot()
例#
PyVista には ImageData
を使う例がいくつかあります.
ボリュームレンダリング の詳細については,PyVistaのドキュメントを参照してください
以下にデータセットの例を挙げます:
from pyvista import examples
vol = examples.download_knee_full()
p = pv.Plotter()
p.add_volume(vol, cmap="bone", opacity="sigmoid")
p.show()
vol = pv.Wavelet()
vol.plot(volume=True)