plotlyとdashで相関行列とその枠内に相関係数を表示する

1 min read読了の目安(約1600字

この記事で作りたいもの

題目の通り、Excelの分析アドオンで作成した相関行列を条件付き書式で色つけしたような相関行列

環境

  • Python 3.6.9
  • dash 1.17.0
  • plotly 4.8.1
  • pandas 1.1.4

手順

dashを使って可視化する。相関行列を出力するデータはscikit-learnのBostonデータセットを使う

import dash
import pandas as pd
import dash_core_components as dcc
import dash_html_components as html
from sklearn.datasets import load_boston
import plotly.figure_factory as ff

boston = load_boston()
boston_df = pd.DataFrame(boston.data, columns=boston.feature_names)
boston_df['MEDV'] = boston.target
corr = boston_df.corr()

app = dash.Dash()
app.layout = html.Div([
    # 相関行列表示コード
])
app.run_server(debug=True)

plotly.graph_objs

調べる限り、あんまり調整が聞かなかった

dcc.Graph(
	id = "heatmap",
	figure = go.Figure( data = [
		go.Heatmap(
			x=boston_df.columns,
			y=boston_df.columns,
			z=corr,
			colorscale='RdBu',
			reversescale=True
		)
	])
)

plotly.figure_factoryのannotated_heatmap

一番しっくりきた

dcc.Graph( 
figure = ff.create_annotated_heatmap(
    z = np.round(corr.values, decimals=2),
    x = boston_df.columns.values.tolist(),
    y = boston_df.columns.values.tolist(),
    colorscale='Magma',showscale=True).update_yaxes(autorange="reversed"
))

出力

付録・参考文献

まとめ

とてもしっくりするものができました。
ホバーしたら、何と何の相関係数か出るようなコードを追加してみたいですね。

今回のコードはGithubに格納してあります

https://github.com/YaCpotato/dash-plotly-corr