概要#

PyVistaは:

  • Pythonic VTK: Visualization Toolkit (VTK) の高レベルAPI

  • 空間データセットのメッシュデータ構造とフィルタリング方法

  • 大規模/複雑なデータジオメトリ用にシンプルかつ構築された3 Dプロット

PyVistaはVisualization Toolkit (VTK) 用のヘルパーライブラリで,NumPyと配列への直接アクセスを介してVTKとのインターフェースを取るための,異なるアプローチをとっています.このパッケージは,VTKの強力な可視化バックエンドを公開するPythonの十分に文書化されたインターフェースを提供し,空間的に参照されたデータセットの迅速なプロトタイピング,分析,および視覚的統合を容易にします.

このモジュールは,他のメッシュ依存Pythonモジュールのサポートモジュールと同様に,プレゼンテーションや研究論文の科学的プロットにも使用できます.

PyVistaを試してみたいですか?MyBinderのライブサンプルをチェックしてみてください: Launch on Binder

PyVistaはNumFOCUS提携プロジェクトです
NumFOCUS提携プロジェクト
https://numfocus.org/sponsored-projects/affiliated-projects

簡単な例#

以下に,PyVistaの使用方法を示す簡単な対話型の例をいくつか示します.

マップと地球科学#

St.Helens山の標高マップをダウンロードしてプロットします.

from pyvista import examples
mesh = examples.download_st_helens()
warped = mesh.warp_by_scalar('Elevation')
surf = warped.extract_surface().triangulate()
surf = surf.decimate_pro(0.75)  # reduce the density of the mesh by 75%
surf.plot(cmap='gist_earth')
_images/index-affb0d176183185c_00_00.png

有限要素解析#

3 D切欠き試験片の弾性応力の 'X' 成分をプロットします.

from pyvista import examples
mesh = examples.download_notch_stress()
mesh.plot(scalars='Nodal Stress', component=0, cmap='turbo', cpos='xy')
_images/index-b4c463d30b431ea1_00_00.png

NumPyを使用した単純なポイントクラウド#

NumPyと簡単に統合し,さまざまなジオメトリを作成してプロットできます.任意のジオメトリを使用して字形を作成したり,点を直接プロットすることもできます.

import numpy as np
import pyvista as pv

rng = np.random.default_rng(seed=0)
point_cloud = rng.random((100, 3))
pdata = pv.PolyData(point_cloud)
pdata['orig_sphere'] = np.arange(100)

# create many spheres from the point cloud
sphere = pv.Sphere(radius=0.02, phi_resolution=10, theta_resolution=10)
pc = pdata.glyph(scale=False, geom=sphere, orient=False)
pc.plot(cmap='Reds')
_images/index-bc7c91e010e7ef64_00_00.png

スプラインをプロットする#

NumPyの点の配列からスプラインを生成します.

import numpy as np
import pyvista as pv

# Make the xyz points
theta = np.linspace(-10 * np.pi, 10 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
points = np.column_stack((x, y, z))

spline = pv.Spline(points, 500).tube(radius=0.1)
spline.plot(scalars='arc_length', show_scalar_bar=False)
_images/index-c5c2c6bfdd1f3cda_00_00.png

メッシュ上のブール演算#

立方体メッシュから球体を減算します.

import pyvista as pv
import numpy as np

def make_cube():
    x = np.linspace(-0.5, 0.5, 25)
    grid = pv.StructuredGrid(*np.meshgrid(x, x, x))
    surf = grid.extract_surface().triangulate().flip_faces()
    return surf

# Create example PolyData meshes for boolean operations
sphere = pv.Sphere(radius=0.65, center=(0, 0, 0))
cube = make_cube()

# Perform a boolean difference
boolean = cube.boolean_difference(sphere)
boolean.plot(color='darkgrey', smooth_shading=True, split_sharp_edges=True)
_images/index-a6ef90722ea46f10_00_00.png

体積データのプロット#

水素原子の \(3d_{xy}\) 軌道をプロットしてください.

注釈

この例では, sympy が必要です.

from pyvista import examples
grid = examples.load_hydrogen_orbital(3, 2, -2)
grid.plot(volume=True, opacity=[1, 0, 1], cmap='magma')
_images/index-09cf17fae9fe0df0_00_00.png

翻訳#

新しいコントリビューターが PyVista の文書を翻訳するために推奨される方法は,Transifexの翻訳チームに参加することです.

pyvista (main) 文書用の pyvista translation page があります.

  1. transifex サービスにログインします.

  2. pyvista translation page に行ってください.

  3. Request language をクリックし,フォームに入力します.

  4. transifex pyvista翻訳メンテナからの承認を待ちます.

  5. (承諾後) transifexで翻訳してください.

  6. atsphinx-mini18n を使用して翻訳文書をホストすることができます。

  7. 翻訳は pyvista-doc-translations にバックアップされています.

詳細はこちら: https://help.transifex.com/en/

状態#

デプロイメント

pypi

conda

ビルドステータス

GH-CI

python

メトリクス

codacy

codecov

活動

PyPIact

condaact

GitHub

contributors

GitHub

引用

joss

zenodo

ライセンス

MIT

コミュニティ

slack

discuss

プロフェッショナルサポート#

PyVistaはコミュニティ主導のオープンソースプロジェクトですが、多くのユーザーや組織が本番ワークフロー、研究パイプライン、カスタム可視化システムでこれに依存しています。専門的なガイダンス、開発支援、保証付きサポートが必要な場合は、PyVistaを構築・保守するメンバーと関わる方法がいくつかあります。

一般的なお問い合わせは info@pyvista.org までご連絡ください。3D可視化や解析に関するご要望に最適なコミュニティの専門家をご紹介いたします。

専門的なサービス (コンサルティング、カスタム開発、機能設計、統合サポート、トレーニング) をお探しの場合は、GitHubの "このプロジェクトをスポンサーする" セクションを通じてPyVistaのコア開発者を支援することをご検討ください。スポンサーシップは専門家への直接的なアクセスを提供するだけでなく、PyVistaの信頼性と最新性を維持するための重要なメンテナンスや継続的な機能開発を支える役割も果たします。

詳細はディスカッション投稿をご覧ください: pyvista/pyvista#4033

開発者をスポンサーすることは、あなたのプロジェクトとPyVistaエコシステムの健全性の両方を支え、継続的な改善、長期的な安定性、そして必要な時に専門家の支援を確保します。

プロジェクトインデックス#