1. 程式人生 > 實用技巧 >python 視覺化包streamlit學習

python 視覺化包streamlit學習

streamlit是一個快速開發基於python應用的資料app包,開發比較方便,同時官方也提供了
一個方便雲服務

安裝

python -m venv venv
source venv/bin/activate
pip install -i https://mirrors.aliyun.com/pypi/simple/ streamlit

簡單應用

  • 命令
streamlit
Usage: streamlit [OPTIONS] COMMAND [ARGS]...
 Try out a demo with:
   $ streamlit hello
 Or use the line below to run your own script:
   $ streamlit run your_script.py
Options:
 --log_level [error|warning|info|debug]
 --version            Show the version and exit.
 --help             Show this message and exit.
Commands:
 activate Activate Streamlit by entering your email.
 cache   Manage the Streamlit cache.
 config  Manage Streamlit's config settings.
 docs   Show help in browser.
 hello   Runs the Hello World script.
 help   Print this help message.
 run    Run a Python script, piping stderr to Streamlit.
 version  Print Streamlit's version number.
  • 建立應用
streamlit hello
  • 執行效果


  • 參考程式碼
import streamlit as st
import numpy as np
# Interactive Streamlit elements, like these sliders, return their value.
# This gives you an extremely simple interaction model.
iterations = st.sidebar.slider("Level of detail", 2, 20, 10, 1)
separation = st.sidebar.slider("Separation", 0.7, 2.0, 0.7885)
# Non-interactive elements return a placeholder to their location
# in the app. Here we're storing progress_bar to update it later.
progress_bar = st.sidebar.progress(0)
# These two elements will be filled in later, so we create a placeholder
# for them using st.empty()
frame_text = st.sidebar.empty()
image = st.empty()
m, n, s = 960, 640, 400
x = np.linspace(-m / s, m / s, num=m).reshape((1, m))
y = np.linspace(-n / s, n / s, num=n).reshape((n, 1))
for frame_num, a in enumerate(np.linspace(0.0, 4 * np.pi, 100)):
  # Here were setting value for these two elements.
  progress_bar.progress(frame_num)
  frame_text.text("Frame %i/100" % (frame_num + 1))
  # Performing some fractal wizardry.
  c = separation * np.exp(1j * a)
  Z = np.tile(x, (n, 1)) + 1j * np.tile(y, (1, m))
  C = np.full((n, m), c)
  M = np.full((n, m), True, dtype=bool)
  N = np.zeros((n, m))
  for i in range(iterations):
    Z[M] = Z[M] * Z[M] + C[M]
    M[np.abs(Z) > 2] = False
    N[M] = i
  # Update the image placeholder by calling the image() function on it.
  image.image(1.0 - (N / N.max()), use_column_width=True)
# We clear elements by calling empty on them.
progress_bar.empty()
frame_text.empty()
# Streamlit widgets automatically run the script from top to bottom. Since
# this button is not connected to any other logic, it just causes a plain
# rerun.
st.button("Re-run")
  • 手工執行
streamlit run app.py

參考資料

https://github.com/streamlit/streamlit
https://www.streamlit.io/sharing
https://docs.streamlit.io/
https://blog.streamlit.io/