Plotly での3次元グラフのプロットシリーズとして、今回の記事では、Mesh Plotについて紹介していきます!!
Mesh Plot とは ?
go.Mesh3dは、graph_objectで使える関数です。
x、y、zで指定された頂点を持つ3Dの三角形を描画して描画していきます。
- 座標のみが指定された場合 : ドロネーの三角形分割などのアルゴリズムを用いて三角形を描画
- それ以外の場合 : i,j,kの各パラメータを使って三角形を指定
実際に描いてみると下記のようなグラフが描画できます!
Aplha hull の設定
alphahullパラメータを用いることで、メッシュの形状を設定できます。
- 値が-1(デフォルト値)の場合 : ドロネー法による三角測量を適用
- 0以上の場合は、alphashapeアルゴリズムを適用
- 0の場合は、凸包 (convex hull) が表現されます(結果的に凸体になる)
実際に、alphahullを設定してみると以下の通り。左から順に alphahull = 5, 0, -1
Mesh Plot (応用編)
データから Mesh Plotを描画
Mesh Plot の描画に必要なデータは、各頂点の座標である x,y,z 座標の位置と、表面の色(facecolor)、そして三角形を決定するときに必要な i,j,k というパラメータです。これらが揃っている場合は、そのまま図示化できます!
Plotly 側で サンダル の描画データが揃っているものがあったので、それを呼び出してみると、このような形になっています。
import pandas as pd
base_url = "https://raw.githubusercontent.com/plotly/datasets/master/ply/"
df = pd.read_csv(base_url + 'sandal-ply.csv')
df.head(10)
次に、これらから Mesh Plot を描画するためにコードを描いてみると、Plotを描くことができます!
fig = go.Figure()
fig.add_trace(go.Mesh3d(
x=df['x'], y=df['y'], z=df['z'],
i=df['i'], j=df['j'], k=df['k'],
facecolor=df['facecolor']
))
fig.show()
コメント