#Panelとは
Anacondaで作ったウィジェットや図、グラフを綺麗に複数並べて配置できるPython Library(PiViz 系)。
Jupyter Notebookでも使えるし、PythonアプリだけじゃなくHTML/JavaScriptアプリケーションなんかも組み込める、有望株です。
以下に書くのは、下記サイトの記述から学んだことです。
https://anaconda.org/pyviz/panel
https://panel.pyviz.org/
使用感はおいおい書いていきます。
#対応Pythonバージョン
Python2.7
Python3.x
Linux, Windows, MacのどれでもOK
#インストール方法
各自のAnacondaターミナルで
conda install -c pyviz panel
か
conda install -c pyviz/label/earthsim panel
か
conda install -c pyviz/label/dev panel
を実行。
Jupyter Labを使いたい場合は追加で以下を実行
conda install -c conda-forge jupyterlab
jupyter labextension install @pyviz/jupyterlab_pyviz
#起動方法
まずサンプルの読み込み(↑の公式にあるサンプルです)
panel examples
cd panel-examples
そしてJupyter NotebookかJupyter Labを起動
jupyter notebook
か
jupyter lab
#コーディングサンプル
以下サイト参考。Jupyter Lab前提。Altairも使ってる
https://towardsdatascience.com/how-to-build-a-time-series-dashboard-in-python-with-panel-altair-and-a-jupyter-notebook-c0ed40f02289
import panel as pn
import altair as alt
from altair import datum
import pandas as pd
from vega_datasets import data
import datetime as dt
alt.renderers.enable(‘default’)
pn.extension(‘vega’)
# 会社名リストを作る
tickers = [‘AAPL’, ‘GOOG’, ‘IBM’, ‘MSFT’]
# ドロップリストで選択できるようにする
ticker = pn.widgets.Select(name=’Company’, options=tickers)
# 日付のスライダーも作っちゃう
date_range_slider = pn.widgets.DateRangeSlider(
name=’Date Range Slider’,
start=dt.datetime(2001, 1, 1), end=dt.datetime(2010, 1, 1),
value=(dt.datetime(2001, 1, 1), dt.datetime(2010, 1, 1))
)
title = ‘### Kabuka Dashboard’
subtitle = ‘Kabuka to Kaisyamei ga deruyo’
@pn.depends(ticker.param.value, date_range_slider.param.value)
def get_plot(ticker, date_range):
# データをロードし整形
df = source # define df
df[‘date’] = pd.to_datetime(df[‘date’])
# 日付フィルタ反映
# var中の開始終了日を保持
start_date = date_range_slider.value[0]
end_date = date_range_slider.value[1]
# データフレームをマスキング
mask = (df[‘date’] > start_date) & (df[‘date’] <= end_date)
df = df.loc[mask] # filter the dataframe
# Altairチャートを作る
chart = alt.Chart(df).mark_line().encode(x=’date’, y=‘price’, tooltip=alt.Tooltip([‘date’,’price’])).transform_filter(
(datum.symbol == ticker) # this ties in the filter
)
return chart
dashboard = pn.Row(pn.Column(title, subtitle, ticker, date_range_slider),
get_plot # 上で作った機能が動くよ
)
#活用サンプル
Bokehサーバ使ってインタラクティブさに拍車をかけてる方もいますね。
https://panel.pyviz.org/gallery/demos/glaciers.html#gallery-glaciers
以上