freedom-_-qの勉強履歴

メモ書きが主になるかと思います。勉強強制のために一日一記事目指してます。頭良くないので間違いが多々あるかと思います。

Streamlitで簡単にWebAppが作れるらしい

はじめに

簡易的なものを作りたいのであれば、Django, Flaskと比べ簡単に爆速で作れるらしい。
まずはお触りのために3Dの曲面wireframeをスライダーで回転させてみる。

インストール

いつものようにpipでインストールする。

>pip install streamlit
...

>streamlit --version
Streamlit, version 0.83.0

曲面の表示

ソースコードは以下となる。特別難しいことはないと思う。

import streamlit as st
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def f(x, y, a, b, c):
    return a * (x**2) + b * (y**2) + c

def main():
    x, y = np.linspace(-50, 50, 50), np.linspace(-50, 50, 50)
    X, Y = np.meshgrid(x, y)
    Z = f(X, Y, -1, 1, 3)
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(X, Y, Z, s=10, c=Z.flatten())

    h_rot = st.slider(label='縦方向の回転',
                    min_value=-180,
                    max_value=180,
                    value=0,
                    )
    v_rot = st.slider(label='横方向の回転',
                    min_value=-180,
                    max_value=180,
                    value=0,
                    )
    ax.view_init(elev=h_rot, azim=v_rot)
    st.pyplot(fig)
    

if __name__ == '__main__':
    main()

適当な名前で保存したら、streamlit run ${適当な名前}.pyで起動できる。
gifにしようとしたけど、うまくできんかったから諦め。

f:id:freedom-_-q:20210620204153p:plain

...これじゃゲロ重くてストレスたまっちゃうので別の方法でやらないといけないですね。
でも、ちょっと探した感じでは、インタラクティブに3Dグラフをグリグリはできない?っぽい。