前回のPlotly記事では、ベクトル場をプロットすることができる Quiver Plot についてまとめました!今回の記事では、その3次元版である Cone Plotsについてまとめていきます!!
Plotly:ベクトルと場の可視化 (Quiver Plots)
物理現象を可視化するときに、矢印の大きさや向きを用いて、ベクトルや場を可視化するときがあると思うのですが、そのような図もPlotly では、描くことができます! この 3次元版として、Cone Plots というものもありますが、今回の...
Cone Plot とは?
ベクトルの方向 と ノルムを コーンで表して、3次元のベクトル場を可視化できるプロットです!
Quiver Plot の 3次元版でもあります
Cone Plot (基本編)
ここでは、Cone Plot を描くのに最低限な6つの要素を説明します。
Plotly の Graph objects では、go.Cone() で Cone Plotを描くことができるので、一つのコーンを実際に描いてみると下の図のようになります!
サンプルコード
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(
go.Cone(x=[1], y=[1], z=[1], u=[1], v=[0], w=[0])
)
fig.show()
複数の Cone Plot を描く
上の例では、1つのCone を描いていきましたが、実際には複数を同時に描くことの方が多いと思います。その例として、ここでは、Cone を 3つに増やして描いてみます!
プラグラムとしては、ほぼ変わらず、x, y, z, u, v, w などの各要素の数 をそれぞれ増やすことで対応
サンプルコード
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Cone(
x=[3, 2, 1],
y=[1, 2, 3],
z=[3, 2, 1],
u=[4, 0, 0],
v=[0, 2, 0],
w=[0, 0, 1],
))
fig.show()
csv から読み込んで 描く
x, y, z, u, v, w に関しては、csvから読み込んでシリーズ型で代入してもOKです!
この例では、Plotly で提供されている vortex.csv というサンプルを用いて、そこから読み込む形で描画をしていきます!
サンプルコード
import plotly.graph_objects as go
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/vortex.csv")
fig = go.Figure()
fig.add_trace(go.Cone(
x=df['x'], y=df['y'], z=df['z'],
u=df['u'], v=df['v'], w=df['w'],
colorscale='Greens',
sizemode="absolute",
sizeref=50
))
fig.show()
参考
今回取り上げた Plotly に関するサンプルは、下記の公式のドキュメントの例に加えて異なるバージョンを可視化してみました!
3d
Detailed examples of 3D Cone Plots including changing color, size, log axes, and more in Python.
コメント