🐡

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

2020/12/02に公開

この記事で作りたいもの

題目の通り、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

Discussion