グローバルおよびローカルプロットテーマの制御#

PyVistaでは,グローバルなプロットテーマとローカルなプロットテーマを設定して,デフォルトのプロットパラメータを簡単に設定できます.

import pyvista as pv
from pyvista import examples

主題を比較するための単純なプロットルーチンを定義する.

mesh = examples.download_st_helens().warp_by_scalar()


def plot_example():
    p = pv.Plotter()
    p.add_mesh(mesh)
    p.add_bounding_box()
    p.show()

PyVistaのデフォルトのカラーテーマは,一般的に見やすいように選択されており,可視化プロジェクトで長時間作業する場合に最適です.グレーの背景と暖色のカラーマップは,暗い環境で作業しているときに3 Dレンダリングによって画面の明るさが大幅に変化しないように選択されています.

デフォルトのプロットテーマの例を次に示します. - これは,ローカルでサンプルを実行した後にデフォルトで表示されるテーマです.

pv.set_plot_theme('default')
plot_example()
themes

PyVistaにはいくつかのプロットテーマも付属しています.

  • 'ParaView': これは,ParaViewの既定のプロットテーマを模倣するように設計されています.

  • 'dark': 暗い背景とカラースキームを使用して,夜間モードに適した設計になっています.

  • 'document': これは,文書スタイルのプロットおよび文書品質図の作成に使用するために作成されています.

'ParaView' テーマのデモ.

pv.set_plot_theme("paraview")

plot_example()
themes

'dark' テーマのデモ.

pv.set_plot_theme("dark")

plot_example()
themes

'document' テーマのデモを行います.このテーマは,オンラインの例で使用されています.

pv.set_plot_theme("document")

plot_example()
themes

プロットウィンドウの背景には,カラーグラデーションを使用することもできます.

plotter = pv.Plotter()
plotter.add_mesh(mesh)
plotter.show_grid()
# Here we set the gradient
plotter.set_background("royalblue", top="aliceblue")
cpos = plotter.show()
themes

グローバル・テーマの変更#

mesh.plot(show_edges=True) などのプロット時に個々のパラメータを設定するか,グローバルテーマを設定することで,メッシュの表示方法を制御できます. pyvista.global_theme を使用して,既定ですべてのメッシュを表示する方法を個々のパラメータでコントロールすることもできます.

ここでは,すべての pyvista メッシュの現在のグローバルデフォルトを出力します.これらの値は,以前の "Document" テーマによって変更されています.

pv.global_theme
Document Theme
--------------
Background               : Color(name='white', hex='#ffffffff', opacity=255)
Jupyter backend          : trame
Full screen              : False
Window size              : [1024, 768]
Camera                   : {'position': [1, 1, 1], 'viewup': [0, 0, 1]}
Notebook                 : None
Font                     :
    Family               : arial
    Size                 : 18
    Title size           : 18
    Label size           : 18
    Color                : Color(name='black', hex='#000000ff', opacity=255)
    Float format         : None
Auto close               : True
Colormap                 : viridis
Color                    : Color(name='lightblue', hex='#add8e6ff', opacity=255)
Color Cycler             : None
NaN color                : Color(name='darkgray', hex='#a9a9a9ff', opacity=255)
Edge color               : Color(name='black', hex='#000000ff', opacity=255)
Outline color            : Color(name='black', hex='#000000ff', opacity=255)
Floor color              : Color(name='gray', hex='#808080ff', opacity=255)
Colorbar orientation     : horizontal
Colorbar - horizontal    :
    Width                : 0.6
    Height               : 0.08
    X Position           : 0.35
    Y Position           : 0.05
Colorbar - vertical      :
    Width                : 0.08
    Height               : 0.45
    X Position           : 0.9
    Y Position           : 0.02
Show scalar bar          : True
Show edges               : False
Lighting                 : True
Interactive              : False
Render points as spheres : False
Transparent Background   : False
Title                    : PyVista
Axes                     : Axes configuration
    X Color              : Color(name='tomato', hex='#ff6347ff', opacity=255)
    Y Color              : Color(name='seagreen', hex='#2e8b57ff', opacity=255)
    Z Color              : Color(name='blue', hex='#0000ffff', opacity=255)
    Use Box              : False
    Show                 : True
Multi-samples            : 8
Multi-renderer Split Pos : None
Volume mapper            : smart
Smooth shading           : False
Depth peeling            :
    Number               : 4
    Occlusion ratio      : 0.0
    Enabled              : False
Silhouette               :
    Color                : Color(name='black', hex='#000000ff', opacity=255)
    Line width           : 2
    Opacity              : 1.0
    Feature angle        : None
    Decimate             : None
Slider Styles            :
    Classic              :
        Slider length    : 0.02
        Slider width     : 0.04
        Slider color     : Color(name='gray', hex='#808080ff', opacity=255)
        Tube width       : 0.005
        Tube color       : Color(name='white', hex='#ffffffff', opacity=255)
        Cap opacity      : 1.0
        Cap length       : 0.01
        Cap width        : 0.02
    Modern               :
        Slider length    : 0.02
        Slider width     : 0.04
        Slider color     : Color(hex='#6e7175ff', opacity=255)
        Tube width       : 0.04
        Tube color       : Color(hex='#b2b3b5ff', opacity=255)
        Cap opacity      : 0.0
        Cap length       : 0.01
        Cap width        : 0.02
Return Camera Position   : True
Hidden Line Removal      : False
Anti-Aliasing            : msaa
Split sharp edges        : False
Sharp edges feat. angle  : 30.0
Before close callback    : None

デフォルトでは, show_edges=True を介してメッシュをプロットする際に明示的に指定しない限り,エッジはメッシュ上に表示されません.デフォルトのパラメータを変更することで,このデフォルトの動作をグローバルに変更できます.

pv.global_theme.show_edges = True
cpos = pv.Sphere().plot()
themes

pyvistaをデフォルトの動作にリセットするには, restore_defaults を使用します.図形の色は,ドキュメントテーマのデフォルトの色 'lightblue' ではなく,デフォルトの色 "白" にリセットされたことに注意してください.内部的には,適用された各テーマは, pyvista.global_theme 内に格納されたグローバルデフォルトプロットを変更します.

pv.global_theme.restore_defaults()
cpos = pv.Sphere().plot()
themes

カスタム・テーマの作成とグローバルな適用#

既存のテーマの1つを修正し,それをグローバルプロットのデフォルトにロードすることで,カスタムテーマを作成できます.

ここでは,エッジを表示しながら既定でメッシュを赤でプロットする暗いテーマを作成します.

from pyvista import themes

my_theme = themes.DarkTheme()
my_theme.color = 'red'
my_theme.lighting = False
my_theme.show_edges = True
my_theme.axes.box = True

pv.global_theme.load_theme(my_theme)
cpos = pv.Sphere().plot()
themes

カスタムテーマを作成して単一のプロッタに適用する#

この例では,ベースの "default" テーマからカスタムテーマを作成し,それを単一のプロッタに適用します. これは変更された DarkTheme に設定されたままのグローバル "default" の動作を変えないことに注意してください.

この方法には,複数のテーマを管理し,1つまたは複数のプロッタに適用できるという利点があります.

from pyvista import themes

my_theme = themes.DocumentTheme()
my_theme.color = 'black'
my_theme.lighting = True
my_theme.show_edges = True
my_theme.edge_color = 'white'
my_theme.background = 'white'

cpos = pv.Sphere().plot(theme=my_theme)
themes

または, Plotter のインスタンスのテーマを設定します.

pl = pv.Plotter(theme=my_theme)
# pl.theme = my_theme  # alternatively use the setter
pl.add_mesh(pv.Cube())
cpos = pl.show()
themes

ドキュメントのテーマを使用するにはリセット

pv.set_plot_theme("document")

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

Sphinx-Galleryによるギャラリー