この記事では、Plotlyで描ける3次元プロットの1つとして、「Isosurface (等値面)」の描き方をまとめていきます!
Isosurfce(等値面)って何?という人へ簡単に説明も行っていきます!!
Isosurface の描き方
Isosurface (等値面)とは?
Isosurfaceとは、和訳すると等値面という意味になります。
標高の同じ地点(高さが等しい)を結んで作る「等高線」を考えるとわかりやすいと思いますが、「等値面」は圧力や温度、密度などの「値が等しい地点を結んだ面」を表した図です。
実際に描いてみると、下のような図になります!
Isosurface の 基本
上で図示した Isosurfaceについては、次のコードで描くことができますが、このコードについての解説を行っていきます!
import plotly.graph_objects as go
fig= go.Figure(data=go.Isosurface(
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()
基本的に Isosurface(等値面)を描くのに必要な要素はこの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)の座標を抜いた図形が 図示される。
Isosurface 応用編
ここからは、下の図を例にあげて等値面を扱う上で使えるさまざまなオプションがあるので図つきで紹介していきます!
側面の削除 (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 の描き方がありますが、ここでは紹介しきれない部分もあるので別の機会でも紹介できたらと思います!
また、このIsosurceに似た Plot方法として Volume Plotについてもまとめている記事もあるので、そちらも見てみてください!
コメント