PythonのPlotlyライブラリを使って等高線図を描く方法

スポンサーリンク

今回は、PythonのPlotlyライブラリと、魅力的な等高線プロットを作成するための様々な方法について学びます。

等高線プロットの様々な例を見て、それぞれの例について詳細なコード解析を行います。

また、等高線プロットをカスタマイズするための複数の方法についても学びます。

それでは、基本的なことから始めましょう。

スポンサーリンク

輪郭プロットって何?

Pip install plotly==5.5.0

等高線とは、3次元の表面を2次元で表現したもので、関節や曲線が描かれています。

2つの変数(X軸とY軸の座標)の関数である輪郭関数(Z)を使って描かれます。

こちらもお読みください。

Plotly ライブラリとは?

Plotlyは、チャートやグラフをプロットするための様々なデータ可視化ライブラリを提供しています。

私たちは、膨大なプロットライブラリのセットから選ぶことができますし、様々な異なるタイプのチャートを作成するための専用ツールもそこに用意されています。

この記事では、ほとんど1つのインポートパッケージと1つのプロット関数だけで作業します。

それがPlotlyを使用する際に得られる使いやすさです。

Plotly のインストール

Plotlyをシステムにインストールするには、次のコマンドを入力します。

import plotly.graph_objects as grob

Plotly で等高線プロットを作成する

それでは、Plotlyで等高線プロットの作成に入りましょう。

基本的な等高線プロット

まず始めに、Plotly を使って簡単な等高線プロットを描きます。


まず最初に必要なのはインポートライブラリです。

以下のインポートパッケージは、Plotly の普遍的な構文のようなもので、ほとんどの仕事をこなせます。

grid_fig = grob.Figure(data =
    grob.Contour(z = data))

プロットリーコンター機能

contour関数は初期化されたデータを使ってプロットを作成します。

x,y 座標と z 関数を与える必要があります。

等高線プロットを作成するためには2つの部分があります。

データの初期化と、輪郭関数を使ったオブジェクトの作成です。

この2つを行うには複数の方法があり、どの方法も輪郭に影響を与えます。

簡単のために、座標は変数 ‘data’ で初期化されていると仮定しましょう。

以下のように、このコードは輪郭の z 関数に対して data の値を取るようにコンパイラに指示しています。

import plotly.graph_objects as grob
 
# This 5X5 matrix stores the coordinate values required for z function
data = [[6, 4, 5, 5, 6],
    [1, 5, 5, 4, 6],
    [5, 4, 4, 6, 4],
    [7, 8, 4, 3, 3]]
 
grid_fig = grob.Figure(data =
    grob.Contour(z = data))
 
grid_fig.show()

すべてのメソッドを理解するために、いくつかのプログラム例を見てみましょう。

Plotly 座標配列をz関数とした等高線プロット。

import plotly.graph_objects as grob
 
fig = grob.Figure(data =
    grob.Contour(
 
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]],
 
        x=[-3, -2, -1, 0, 1], # horizontal axis
        y=[0, 1, 3, 4, 5] # vertical axis
    ))
fig.show()

出力

import plotly.graph_objects as grob
import numpy as nump
 
# variables are initialised with x,y co-ordinates
cordof_x = nump.arange(0, 23, 0.5)
cordof_y = nump.arange(0, 46, 0.3)
 
# A mesh is created with the given co-ordinates by this numpy function
[X, Y] = nump.meshgrid(cordof_x, cordof_y)
 
contour_function = nump.cos(X*(1/8)) + nump.sin(Y*(1/16))
 
contour_plot = grob.Figure(data =
    grob.Contour(x = cordof_x, y = cordof_y, z = contour_function))
 
contour_plot.show()

X,Y,Zの値を指定したPlotly等高線プロット

dx=40,
x0=10,
dy=10,
y0=20,

出力

colorscale='hot',

ここで、z関数は前の例と同様に座標配列です。

Numpyインポートパッケージを使用すると、さらに複雑なデータを等高線プロットに使用することができます

次の例では、z関数に三角関数の恒等式をどのように置くかを観察します。

Numpyを用いた等高線プロット

colorscale='electric',

出力

contours=dict(
            start=0,
            end=14,
            size=2,
        ),

以上の例で、基本的な等高線プロットがどのように作成されるかが完全に明らかになったかと思います。

これまで、等高線プロットの入力と z 関数を作る様々な方法を学んできました。

次に、等高線プロットのスタイルについて説明します。

Plotly の等高線プロットをカスタマイズする

このセクションでは、主に輪郭プロットのフロントエンドの側面、または単にスタイリングの側面について述べます。

プロットの色とスケールを設定する

z関数で初期化された座標配列があるプログラムの例を見てみましょう。

さて、等高線プロットにおいて、カスタムスケールでプロットを表現したい場合、以下のようにします。

import plotly.graph_objects as grob
 
grid_fig = grob.Figure(data =
    grob.Contour(
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]],
        dx=40,
        x0=10,
        dy=10,
        y0=20,
        colorscale='electric',
        contours=dict(
            start=0,
            end=14,
            size=2,
        ),
     ))
 
grid_fig.show()

さて、スケールが設定された後、プロットのテーマを変更したいとしましょう。

それは次のようにしてできます。

import numpy as np
import math
import plotly.graph_objects as grob
 
 
x = np.linspace(-np.pi, np.pi, num=80)
y = x
def pf(a, b):
    return math.sin(b) / (1 + a**2)
f = np.empty((len(x), len(y)))
 
for i in range(len(x)):
    for j in range(len(y)):
        f[i,j] = pf(x[i], y[j])
 
grid_fig = grob.Figure()
grid_fig.add_trace(grob.Contour(z=f, x=x, y=y,
                         contours_coloring='lines',
                         line_width=1.5,
                         contours={"showlabels":True,
                                   "labelfont":{"size":10,
                                                "color":'red'}}))
 
grid_fig.update_layout(
 
{   "title": {"text": "<b>Advanced Contour Plot</b>", "x": 0.5, "y": 0.9, "font": {"size": 14} },
    "showlegend": True,
    "xaxis": {"title": "scale of x ----------------------->", "showticklabels":True, "dtick": 1},
    "yaxis": {"title": "scale of y ------------>", "showticklabels": True, "dtick": 1},
    "autosize":False,
    "width":1200,
    "height":600})
 
grid_fig.show()

または

plotlybasic-plot.png

最後の仕上げに、プロットにカラースケールを追加することもできます。

それは次のようにしてできます。

plotlybasic-plot.png

すべてをプログラムに入れて、それがどのように実行されるかを観察してみましょう。

Plotly-coordinates_xyz.png

出力

Plotly-numpy-plot.png

高度な等高線プロットを作成する

これまで、Plotlyを使った等高線プロットの基本的な部分について学んできました。

今度は、これまで学んだことをまとめて、高度な等高線プロットを作成し、実際の用途で作成される等高線プロットがどのようなものか理解できるようにします。

以下はそのコードです。

plotly-custom_plot.png

出力

Plotly-advanced_plot.png

まとめ

この記事では、Plotlyの基本的な概念と、どのようにニーズに応じてカスタマイズできるかを学びました。

入力メソッドに特定の座標値や座標配列を使用できること、numpyの統合により三角関数の等高線プロットが可能になることを理解しました。

最後に、どのように高度なプロットを作成するかについて観察しました。

この記事がPlotlyの学習と理解の助けになることを願っています。

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