・お題:indexにサンプル名、Xにx軸データ、Yにy軸データが入ったpandasのDataFrameを入手した。これで散布図を描きたいのだが、カーソルをプロットに乗せるとサンプル名とx,yの情報が出るようなインタラクティブな仕様にしたい。
・PythonのDash(というかplotly)というライブラリを使って実装してみた。きちんとしたことは公式サイトをご確認いただきたい。
・とりあえず、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")
おわり。