この記事では、Plotlyで描ける3次元プロットの1つとして、「Volume Plot」の描き方をまとめていきます!
Volume Plot って何?という人へ簡単に説明も行っていきます!!
また、このVolume Plotは以前まとめた Isosurface(等平面) Plot と似ている部分が多いので、そちらも併せて読んでみてください!
Volume Plot の描き方
Volume Plot とは?
Volume Plot とは ボリュームレンダリングのための 部分的に透明な等値面 (Isosurface)を可視化する 3次元グラフです
使い方は go.Isosurface とほぼ同じで go.Volume と変えるだけで Volume Plotに変えることができます!
違いとしては
- Isosurface plot : すべての面を 同じと不透明度で表す
- Volume plot : opacityscale を調整することで 奥行き効果が得られ より良い 「ボリューム レンダリング」が可能に!
実際に描いてみると、下のような図になります!
Volume plot の 基本
上で図示した Volume plot については、次のコードで描くことができますが、このコードについての解説を行っていきます!
import plotly.graph_objects as go
fig= go.Figure()
fig.add_trace(go.Volume(
x=[0,0,0,0,1,1,1,1],
y=[1,0,1,0,1,0,1,0],
z=[1,1,0,0,1,1,0,0],
value=[1,2,3,4,5,6,7,8],
isomin=2,
isomax=8,
))
fig.show()
基本的に Volume plot を描くのに必要な要素はこの3つです。実際に上の例をもとに紹介していくと、
1. 各点の座標:(x,y,z) = (0,1,1), (0,0,1), (0,1,0), (0,0,0), (1,1,1), (1,0,1), (1,1,0), (1,0,0) を定義
2. 各点の値(value)の設定 : これは、上の座標で定義した点のそれぞれに、1,2,3,4,5,6,7,8
3. isomin, isomax : 表示する下限値・上限値
今回は、isomin = 2 なので、 value=1の (0,1,1)の座標を抜いた図形が 図示される。
Volume plot 応用編
ここからは、下の図を例にあげて等値面を扱う上で使えるさまざまなオプションがあるので図つきで紹介していきます!
側面の削除 (caps)
デフォルトでは図中で側面は塗りつぶされますが、それを取り除き内部をよく見たい!というときは、capsにより設定することが可能です!
caps=dict(x_show=False, y_show=False)
表示する層の数 (surface_count)
デフォルトでは表示する表面の数は2ですが、それ以上表示したい場合は surface_count で指定することで表示可能になります!
surface_count = 5
透過率 (opacity)
この設定は他のグラフでも使われていますが、 opacityで透過率を指定できます!
(下の図は、opacity = 0.3, surface_count = 3 )
opacity=0.3
おわりに
Isosurface Plotと同様で 他にもいろいろなVolume Plot の描き方がありますが、ここでは紹介しきれない部分もあるので別の機会でも紹介できたらと思います!
コメント