Plotly Surfaceを使ったサーフェスプロット#
※記事内に商品プロモーションを含むことがあります。
公開日
Pythonのインタラクティブなグラフを描画できるライブラリPlotlyにて、Surfaceを使ったサーフェスプロットを描画する方法を解説します。
Plotlyには、高水準のAPIであるPlotly Expressと呼ばれるものもありますが、
この記事では細かい調節ができるgraph_objectsを対象としています。
Surfaceの基礎#
Surfaceを使ったサーフェスプロットの簡単な例を示します。
import plotly.graph_objects as go
x = [0, 1, 2, 3]
y = [0, 1, 2]
z = [
[0, 0, 0, 0],
[2, 3, 3, 2],
[1, 1, 1, 1],
]
fig = go.Figure(
data=go.Surface(x=x, y=y, z=z),
)
fig.show()
go.Surface()では、連続した面(サーフェス)を描画できます。
x, y, z引数にそれぞれx, y, z座標の配列を与えます。
zは2次元配列とします。
色のオプション#
go.Surfaceの色に関する主なオプションを以下に示します。
cmax,cmin(float): カラースケールの上限と下限colorscale(str): カラーマップを指定opacity(float): 透明度(0~1). 0に近いほど透明reversescale(bool):Trueにするとカラーマップの色順を反転showscale(bool):Falseにするとカラーバーを非表示
赤色で透明度0.7とした例を以下に示します。
fig = go.Figure(
data=go.Surface(x=x, y=y, z=z, colorscale="Reds", opacity=0.7),
)
fig.show()
等高線のオプション#
go.Surfaceのcontoursオプションで等高線を表示することができます。
contoursはx, y, z軸ごとに辞書形式で指定します。
主なキーは以下になります。
show(bool):Trueにすると等高線を表示(デフォルト:False)color(str): 等高線の色start(float): 等高線の描画を開始する値end(float): 等高線の描画を終了する値size(float): 等高線を描画する間隔width(float): 等高線の線幅
x軸方向の等高線を追加した例を以下に示します。
等高線の間隔 (size) は0.2としました。
contours = {
"x": {
"show": True,
"color": "white",
"start": 0,
"end": 3,
"size": 0.2,
"width": 16
}
}
fig = go.Figure(
data=go.Surface(x=x, y=y, z=z, contours=contours),
)
fig.show()