- Published on
【Python】Mercuryでjupyternotebookを簡単にWebアプリ化
- Authors
- Name
- snuow
- @snuow_w
Mercury とは
- jupyternotebook を簡単に Web アプリ化できるライブラリ
- サクッと Web アプリ化できるのはかなり便利
- ウィジェットの数はまだまだ少ないかも
動画
ソースコード
全体像
mr.App
を追加するだけで、Web アプリ化できる。- プロジェクトフォルダから、
mercury run
で Web アプリを起動できる
- プロジェクトフォルダから、
- 最終形は下記のような感じの UI になります。
#%%
import mercury as mr # for widgets
import pandas as pd
import plotly.express as px
#%%
app = mr.App(title="snuow demo apps", description="サンプルとしてつくってみました。")
#%% md
## サンプル用のアプリケーション
### 使い方
1. ファイルアップロードエリアにCSVをドラッグアンドドロップ
2. 表示されたDropdownでx軸、y軸の値を選択
3. 散布図作成ボタンをクリック
---
#%%
file = mr.File(label='ファイルアップロード', max_file_size="100MB")
x = None
y = None
if file.filepath:
df = pd.read_csv(file.filepath,header=[0],encoding='cp932')
if not x:
x = mr.Select(label='x軸',value=df.columns.values.tolist()[0], choices=df.columns.values.tolist())
else:
pass
if not y:
y = mr.Select(label='y軸',value=df.columns.values.tolist()[0], choices=df.columns.values.tolist())
else:
pass
gen_graph_button = mr.Button(label='散布図生成')
if gen_graph_button.clicked:
if (x.value != "") and (y.value != ""):
fig = px.scatter(data_frame=df,x=x.value,y=y.value)
fig.show()
- 下記の部分では、ファイルがアップロードされたら、pandas の read_csv でファイルを読み込みます。
- また、ファイルが読み込まれると、セレクトボックスが出現します。
if file.filepath:
df = pd.read_csv(file.filepath,header=[0],encoding='cp932')
if not x:
x = mr.Select(label='x軸',value=df.columns.values.tolist()[0], choices=df.columns.values.tolist())
else:
pass
if not y:
y = mr.Select(label='y軸',value=df.columns.values.tolist()[0], choices=df.columns.values.tolist())
else:
pass
- ボタンがクリックされると、下記のコードが実行されます。
- セレクトボックスの x,y に値が入っていれば(選択されていれば)、散布図が表示されます。
gen_graph_button = mr.Button(label='散布図生成')
if gen_graph_button.clicked:
if (x.value != "") and (y.value != ""):
fig = px.scatter(data_frame=df,x=x.value,y=y.value)
fig.show()