みなさん、こんばんわ。ときか姉です♪
今日は時間があったので、久しぶりにPythonのWebアプリフレームワークの近況をネットで調べてみました。
こういった調べる作業を数ヶ月サボっていたのですが、その数ヶ月で時代遅れになっていたようです。数ヶ月でこうなってしまうのがこの業界の怖いところです。。この期間たくさん出ていたようですね。日進月歩♪
色々と勉強になりました。初めて知ったフレームワークがあったりと。
そのうちの1つがStreamlitです。
今回は、早速そのSteramlitを使って、簡単なWebアプリを書いてみました。
正規分布関数の分散をUIで変化させて、リアルタイムでグラフを更新するとてもシンプルなコードです。
test.pyなど適当なファイルに、以下をコピペしてください。
# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
# 正規分布の分散
sigma = st.sidebar.number_input('Sigma', value=1, min_value=1, max_value=3, step=1)
def gauss(x,sigma):
a=1.0
mu=0.0
return a*np.exp(-(x-mu)**2/(2*sigma**2))
def main():
x=np.arange(-10,10,0.1)
data=gauss(x,sigma)
df = pd.DataFrame(data)
# 描画1: line
st.subheader('Line Chart')
st.line_chart(df)
# 描画2: bar
st.subheader('Bar Chart')
st.bar_chart(df)
if __name__ == '__main__':
main()
Streamlitのimport時に、以下のようなエラーがでる場合がありますが、その場合には、protobufをupgradeしてください。
module 'google.protobuf.descriptor' has no attribute '_internal_create_key'
protobufをupgradeする方法は以下です。
pip install --upgrade protobuf
そうすれば動くと思います。
実行には、以下のように頭に「streamlit run」を付けます。
streamlit run test.py # streamlitを用いたWebアプリコードの実行
実行すると、ブラウザが立ち上がり、以下のようなグラフが表示されます。
*Bar chartの横軸ラベルが潰れてしまっていてすみません。。
左側のSigmaのプラスを押すと、右側の正規分布(Line chart / Bar Chart)の幅が広がります。マイナスで幅が縮まります。
どうでしょう?とても簡単にできますよね〜♪
数日前にPyWebIOも紹介しましたが、どちらが良いのかはまだよくわかりません。
今のところ、なんとなく、PythonでWebアプリとなると、コーディングと学習コストのコスパ的にStreamlitが最良のような気がします。
みなさんもぜひ使ってみてくださいね。
公式ドキュメントはこちら:
サンプルにもあるようなData visualizationを始め、Streamlitを用いたみなさんご自慢の自作アプリなどがあれば教えて下さいね♡
色々なサンプルがあって楽しいです♪
♪♪♪ Have a nice coding day ♪♪♪
[コーディング時には↓のゲーミングチェア使ってます♪]
[トレード口座開設はコチラ↓]
コメント