Plotly Surfaceを使ったサーフェスプロット

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.Surfacecontoursオプションで等高線を表示することができます。 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()

参考サイト#