Python の Web アプリ化 (Panel)2023年6月13日 | |
はじめにPanel は Python コードを Web アプリ化するライブラリである。Jupyter Notebook でも使える。 バージョン
インストールとサンプル実行インストールは pip で行う。 >pip install panel アプリ例平方根計算sqrt.py/sqrt.ipynb
import panel as pn
pn.extension()
answer = pn.widgets.StaticText(value="")
text = pn.widgets.TextInput(name= "数値:", placeholder= "数値を入力")
button = pn.widgets.Button(name="計算")
def sqrt(a):
if a <= 0: return 0
x = 1.
for i in range(10):
x = x - (x**2 - a)/(2.*x)
return x
def calculate(event):
try:
a = float(text.value)
x = sqrt(a)
answer.value = str(x)
except:
pass
button.on_click(calculate)
pn.WidgetBox("# 平方根計算", text, button, answer).servable()
![]() Web アプリとしては次のように実行。 >panel serve sqrt.py --show あるいは >panel serve sqrt.ipynb --show ![]() コードで servable() としたものが表示される。 プロットplot.py/plot.ipynb
import panel as pn
pn.extension()
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(3*x)
ax.plot(x, y)
plot = pn.pane.Matplotlib(fig, dpi=100)
pn.WidgetBox("# プロット", plot).servable()
![]() Web アプリ ![]() Voilà との比較Jupyter Notebook を Web アプリ化するツールとして Voilà があるが、Voilà は ipywidgets を使っておけばノートブックをそのままアプリにしてくれるが、Panel の場合はアプリに表示したいものを指定する感じである。Panel は ipywidgets の代わりになるが、ノートブックをそのままアプリ化したい場合は Voilà が向いていそうである。 | |
| PENGUINITIS | |