python だけでチャートを描画できる streamlit

2021年12月19日

python だけでチャートが出力できるとの事。  
ちょっと面白そうだったので動かしてみました。  
内容はほぼコピペですが。  

参考

インストール

ライブラリをインストールします。

pip install streamlit watchdog matplotlib click
  • streamlit
    • 本体
  • watchdog
    • パフォーマンスの向上
  • matplotlib
    • グラフの可視化
  • click
    • スクリプトに引数を渡す

文字列を描画

文字列を描画してみます。

# -*- coding: utf-8 -*-
import streamlit as st
def main():
    # Streamlit が対応している任意のオブジェクトを可視化する (ここでは文字列)
    st.write('Hello, World!')
if __name__ == '__main__':
    main()

デフォルトのポートが 8501 らしいので、ブラウザで下記のURLを叩くと画面が表示されます。

http://localhost:8501/

グラフを描画

グラフを描画してみます。

# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
def main():
    # ランダムな値でデータフレームを初期化する
    data = {
        'x': np.random.random(20),
        'y': np.random.random(20) - 0.5,
        'z': np.random.random(20) - 1.0,
    }
    df = pd.DataFrame(data)
    # 折れ線グラフ
    st.subheader('Line Chart')
    st.line_chart(df)
    # エリアチャート
    st.subheader('Area Chart')
    st.area_chart(df)
    # バーチャート
    st.subheader('Bar Chart')
    st.bar_chart(df)
if __name__ == '__main__':
    main()

表を描画

表を描画してみます。

# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
def main():
    # Pandas のデータフレームを可視化してみる
    data = {
        # ランダムな値で初期化する
        'x': np.random.random(20),
        'y': np.random.random(20),
    }
    df = pd.DataFrame(data)
    # データフレームを書き出す
    st.dataframe(df)
    # st.write(df)  でも良い
    # スクロールバーを使わず一度に表示したいとき
    st.table(df)
if __name__ == '__main__':
    main()

地図を描画

地図を描画してみます。

# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
def main():
    # 東京のランダムな経度・緯度を生成する
    data = {
        'lat': np.random.randn(100) / 100 + 35.68,
        'lon': np.random.randn(100) / 100 + 139.75,
    }
    map_data = pd.DataFrame(data)
    # 地図に散布図を描く
    st.map(map_data)
if __name__ == '__main__':
    main()

2021年12月19日