【Python】Plotlyを使って等高線図を作成

Python備忘録。内容は初心者向けです。

今回の内容

  • Pandasでエクセルファイルを読み込み
  • plotlyで等高線図を作成



使用するのはPlotly

使用するライブラリは、見た目のよいイマドキのグラフが作成できるPlotlyです。

サンプルコード


import pandas as pd
import plotly
import plotly.graph_objects as go

df = pd.read_excel('contourdata.xlsx')
df_s = df.sort_index(ascending=False)

fig = go.Figure(data =go.Contour(z=df_s))
fig.update_layout(title='Sample Graph', autosize=False,
                  width=500, height=500,
                  margin=dict(l=30, r=30, b=30, t=60))
fig.update_layout(xaxis=dict(tickvals=[]),yaxis=dict(tickvals=[]))
fig.update_traces(zmin=1.0,zmax=1.6)
fig.show()

コメント

  • 「df = pd.read_excel〜」で、エクセルファイルの読み込み
  • 「df_s = df.sort_index」で、エクセルデータの並び替え
  • 「fig = go.Figure〜」で、等高線図作成
  • 「fig.update_layout〜」で、タイトルや画像の大きさや余白の設定など
  • 「zmin=1.0,zmax=1.6」で、レンジを設定

前回の記事のヒートマップと似たようなグラフですが、等高線図のほうがなめらかな変化になっています。こちらの方が直感的にデータを理解できるようになるケースもあると思います。

ヒートマップも等高線図も、どちらもパッと見てデータの傾向が分かるのがよいですよね。適している方を使用すればよいと思います。

元データはこれ。A2からJ11までの100点のデータです。

出力

レンジの設定は、ヒートマップと異なり「zmin=1.0,zmax=1.6」で設定します。これを書かない場合は自動でレンジが決まります。

あと、Pandasでデータの並び替えを行なっています。「df_s = df.sort_index(ascending=False)」←この部分。

これをしないとエクセルのデータとPlotlyのグラフの上下が逆になってしまうのですよね。(A2セルがグラフでは左下、A11セルがグラフでは左上になります)

事前に並び替えをすることで、エクセルのデータの並び順(見た目)とグラフの見た目を合わせることができました。

↑Plotlyを使うならこれ!!Plotly&Dashが学べます!

↑データの前処理はPandasで。