Plotly 3D streamtube plot の 描き方 まとめ

plotly使い方

 この記事では、Plotlyで描ける3次元プロットの1つとして、「Streamtube Plot」の描き方をまとめていきます!
  Streamtube Plot って何?という人へ簡単に説明も行っていきます!!

スポンサーリンク

Streamtube Plot とは?

 ベクトル場の流れ(stream)を可視化するための plot です。
設定する要素としては、6 つ。

  • 座標を表す x, y, z
  • ベクトル成分 u, v, w

 この計 6つの同じ長さの配列を用いて描いていきます!
実際に描いてみると、下のような図になります!

 この streamtube の開始位置は、ベクトル場の x-z平面からその最小となる y値が切り取られる形で設定されます!
独自に指定することもできますが、その際は starts.x というようにstartsで設定する必要があります!

 そのほかの設定としては、色・チューブの半径の設定についてです。

  • 色 : (u, v, w) の ノルム により設定
  • チューブの半径 : (u, v, w) のダイバージェンスにより設定

実際に描いてみよう!

 上の図では、このようなコードで描いた streamtube plot を載せていました!
ここでは、値を少し変えながら streamtube plot をまとめていきます!

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Streamtube(x=[0, 0, 0], y=[0, 1, 2], z=[0, 0, 0],
                            u=[0, 0, 0], v=[1, 1, 1], w=[0, 0, 0]))
fig.show()

ベクトルv を変更 (チューブの半径を変更)

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Streamtube(x=[0, 0, 0], y=[0, 1, 2], z=[0, 0, 0],
                            u=[0, 0, 0], v=[1, 2, 1], w=[0, 0, 0]))
fig.show()

チューブの軸を 回転

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Streamtube(x=[0, 1, 5], y=[0, 0, 0], z=[0, 0, 0],
                            u=[1, 1, 1], v=[0, 1, 0], w=[0, 0, 0]))

fig.show()

チューブの長さ変更 + 90度回転

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Streamtube(x=[0, 1, 5], y=[0, 0, 0], z=[0, 0, 0],
                            u=[1, 1, 1], v=[0, 0, 0], w=[0, 0, 0]))
fig.show()

スポンサーリンク

(応用編) より複雑なstreamtube plot

 最後に Plotly のデータセットを用いて streamtube plotを図示していきます!

https://raw.githubusercontent.com/plotly/datasets/master/streamtube-wind.csv

 ここでは、csv 形式で x, y, z, u, v, wがそれぞれ保存されているのでそれらを読み込み図示しています。
そのため、これら6要素を保存さえできれば図示することが可能なので、流体などを扱われている人がいれば活用できるのでは!と思います。

コメント

タイトルとURLをコピーしました