
まくまく
プラグラミング言語「PYTHON」を使ってみよう!!業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。
今回の内容
- Pandasでエクセルファイルを読み込み
- plotlyで等高線図を作成
使用するのは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()
コメント
- 5行目「df = pd.read_excel〜」で、エクセルファイルの読み込み
- 6行目「df_s = df.sort_index」で、エクセルデータの並び替え
- 8行目「fig = go.Figure〜」で、等高線図作成
- 9行目「fig.update_layout〜」で、タイトルや画像の大きさや余白の設定など
- 13行目「zmin=1.0,zmax=1.6」で、レンジを設定
前回の記事のヒートマップと似たようなグラフですが、等高線図のほうがなめらかな変化になっています。こちらの方が直感的にデータを理解できるようになるケースもあると思います。
ヒートマップも等高線図も、どちらもパッと見てデータの傾向が分かるのがよいですよね。適している方を使用すればよいと思います。
元データはこれ。A2からJ11までの100点のデータです。
出力
レンジの設定は、ヒートマップと異なり「zmin=1.0,zmax=1.6」で設定します。これを書かない場合は自動でレンジが決まります。
あと、Pandasでデータの並び替えを行なっています。6行目「df_s = df.sort_index(ascending=False)」←この部分。sortというのは、その名の通り”並び替え”です
これをしないとエクセルのデータとPlotlyのグラフの上下が逆になってしまうのですよね。(A2セルがグラフでは左下、A11セルがグラフでは左上になります)
事前に並び替えをすることで、エクセルのデータの並び順(見た目)とグラフの見た目を合わせることができます。(拘らなければ6行目は削除しても大丈夫です。)
↑Plotlyを使うならこれ!!Plotly&Dashが学べます!
↑データの前処理はPandasで。