KNIMEとか倉庫

KNIMEやEXCELなどの備忘録です。

【Python】インタラクティブな散布図を描きたい

・お題:indexにサンプル名、Xにx軸データ、Yにy軸データが入ったpandasのDataFrameを入手した。これで散布図を描きたいのだが、カーソルをプロットに乗せるとサンプル名とx,yの情報が出るようなインタラクティブな仕様にしたい。

 

PythonのDash(というかplotly)というライブラリを使って実装してみた。きちんとしたことは公式サイトをご確認いただきたい。

dash.plotly.com

・とりあえず、dashをインストールする。また、今回はjupyter notebookで実装しているので、jupyter-dashというライブラリもインストールする。

・次に、pandasのDataFrameを作成する。

import pandas as pd
import numpy as np
X=np.random.random(100)
Y=[i*2+np.random.normal(0,0.1) for i in X]
N=[F"Sample{n}" for n in range(100)]
df=pd.DataFrame({"X":X,"Y":Y},index=N)

・dfの中身は以下の通り。

・次に、図示する。

import plotly.express as px
fig =px.scatter(df, x="X", y="Y",hover_name=df.index)#hover_nameはポップアップ時の名前
fig.show()

・ちなみに、「ここをズームして確認したい」という場合には、囲うとズームできる。

・以下のようにhtml形式で保存すれば、Python環境がなくてもブラウザさえあればインタラクティブなFigを見ることができる。データを共有する際に便利。
import plotly.express as px
fig =px.scatter(df, x="X", y="Y",hover_name=df.index)
fig.write_html("test.html")

 

おわり。