赞
踩
官网:https://streamlit.io/
github:https://github.com/streamlit/streamlit
API 参考:https://docs.streamlit.io/library/api-reference
最全 Streamlit 教程:https://juejin.cn/column/7265946243196436520
Streamlit-中文文档:https://github.com/wanghanbinpanda/Streamlit-Documentation-Chinese/blob/main/README.md
框架对比:Gradio、Streamlit 和 Dash:https://zhuanlan.zhihu.com/p/611828558
在机器学习领域,针对已经训练好的模型创建一个快速的 Demo 通常是必要的,下面是快速创建机器学习应用的几个框架:gradio、streamit 和 dash 进行简单的对比。
gradio | streamit | dash | |
---|---|---|---|
主要使用场景 | 可交互小 Demo | 工作流、DashBoard | DashBoard、生产环境的复杂演示应用 |
上手难度 | 简单 | 简单 | 中等 |
组件丰富度 | 低 | 高 | 高 |
综合扩展性 | 低 | 中 | 高 |
Jupyter Notebook 内支持 | 是 | 否 | 是 |
是否完全开源 | 是 | 是 | 部分企业级功能未开源 |
github stars | 13.4k | 23.1k | 18.2k |
案例列表 | GitHub - gradio-app/awesome-demos: links and status of cool gradio demos | App Gallery • Streamlit | Dash Enterprise |
nicegui
官网:https://nicegui.io/
github:https://github.com/zauberzeug/nicegui/
nicegui 中文文档:nicegui-reference-cn:https://zhuanlan.zhihu.com/p/661187865
在 Python 3.10 及更高版本中,collections模块被重构,MutableMapping 已经被弃用。
安装:pip install nicegui
NiceGUI 基于FastAPI,封装了Quasar、Vue、Tailwind CSS、AG Grid、ECharts等,可以用来快速开发web或桌面程序。
Streamlit 是Python可视化 web 神器 ,是一个开箱即用的工具集,可以让开发者免于学习繁杂的前端知识,仅需几行代码就可以轻松、快速的构建一个简洁、优雅、令人惊叹的可视化 web app 应用。用于机器学习、数据可视化。当快速搭建一个 web app 的时候 Streamlit 绝对是开发神器。
:https://docs.streamlit.io/get-started/fundamentals/summary
安装:pip install -i https://pypi.douban.com/simple streamlit
Streamlit 提供了一些入门示例,执行命令即可:streamlit hello
执行后会自动打开浏览器加载一个本地页面 http://localhost:8501/
这里面有很多的 demo,可以看下这些 Demo 还有对应的配套代码。代码直接拷贝保存,就可以在本地直接通过如下命令直接运行:streamlit run st-demo.py
:https://docs.streamlit.io/knowledge-base/using-streamlit/how-do-i-run-my-streamlit-script
运行 streamlit 方法:( Ctrl + c 结束运行 )
- import sys
- import streamlit as st
- from streamlit import runtime
- from streamlit.web import cli as stcli
-
-
- def my_web_app():
- # markdown
- st.markdown('Streamlit markdown')
- st.header('Streamlit Demo')
-
-
- def main():
- if runtime.exists():
- my_web_app()
- else:
- sys.argv = ["streamlit", "run", sys.argv[0]]
- sys.exit(stcli.main())
-
-
- if __name__ == '__main__':
- main()
Python 直接执行:python temp_test.py
浏览器中直接访问 URL
导入 streamlit 后,就可以直接使用 st.markdown() 初始化,调用不同的方法,就可以往文档对象中填入内容
示例:
- import streamlit as st
-
- # markdown
- st.markdown('Streamlit Demo')
-
- # 设置网页标题
- st.title('一个傻瓜式构建可视化 web的 Python 神器 -- streamlit')
-
- # 展示一级标题
- st.header('1. 安装')
-
- st.text('和安装其他包一样,安装 streamlit 非常简单,一条命令即可')
- code1 = '''pip3 install streamlit'''
- st.code(code1, language='bash')
-
-
- # 展示一级标题
- st.header('2. 使用')
-
- # 展示二级标题
- st.subheader('2.1 生成 Markdown 文档')
-
- # 纯文本
- st.text('导入 streamlit 后,就可以直接使用 st.markdown() 初始化')
-
- # 展示代码,有高亮效果
- code2 = '''import streamlit as st
- st.markdown('Streamlit Demo')'''
- st.code(code2, language='python')
Streamlit 运行的方式 与普通的脚本 有所不同,命令行执行:streamlit run st-demo.py
关于数据的展示,streamlit 由两个组件进行支持
Table 的示例
- df = pd.DataFrame(
- np.random.randn(10, 5),
- columns=('第%d列' % (i+1) for i in range(5))
- )
-
- st.table(df)
Datafram 的示例
- df = pd.DataFrame(
- np.random.randn(10, 5),
- columns=('第%d列' % (i+1) for i in range(5))
- )
-
- st.dataframe(df.style.highlight_max(axis=0))
其实还有 n 多种样式,都可以在源代码中找到示例,比如:
在采集到一些监控数据后,若你需要做一个监控面板, streamlit 也为你提供的 metric 组件
示例:创建 三个指标,并且填入对应的数据
- col1, col2, col3 = st.columns(3)
- col1.metric("Temperature", "70 °F", "1.2 °F")
- col2.metric("Wind", "9 mph", "-8%")
- col3.metric("Humidity", "86%", "4%")
刷新页面,就能看到下面的效果
Streamlit 原生支持多种图表:
折线图
- chart_data = pd.DataFrame(
- np.random.randn(20, 3),
- columns=['a', 'b', 'c'])
-
- st.line_chart(chart_data)
面积图
- chart_data = pd.DataFrame(
- np.random.randn(20, 3),
- columns = ['a', 'b', 'c'])
-
- st.area_chart(chart_data)
柱状图
- chart_data = pd.DataFrame(
- np.random.randn(50, 3),
- columns = ["a", "b", "c"])
- st.bar_chart(chart_data)
地图
- df = pd.DataFrame(
- np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
- columns=['lat', 'lon']
- )
- st.map(df)
Streamlit 的一些原生图表组件,虽然做到了傻瓜式,但仅能输入数据、高度和宽度,如果你想更漂亮的图表,就像 matplotlib.pyplot、Altair、vega-lite、Plotly、Bokeh、PyDeck、Graphviz 那样,streamlit 也提供了支持:
前面都只是展示文本和数据,streamlit 还能写一些交互界面。平时在网页上、app 上能看到的交互组件,Streamlit 几乎都能支持。。
这些内容非常多,也比较简单,可以直接去看 streamlit 源码里的注释即可。
Session State是Streamlit中用于在不同页面之间传递和保存状态数据的一种机制。通过Session State,我们可以在应用程序的整个生命周期中维护和访问特定于会话的变量。这意味着我们可以在不同页面之间共享和使用相同的变量值,从而实现多页面之间的交互和数据传递。
优点:
缺点:
官网 多页 文档:https://docs.streamlit.io/library/advanced-features/multipage-apps
在单个py文件中,如果每个应用 "页面" 都编写为一个函数,选择框用于选择要显示的页面。随着应用的发展,维护代码需要大量额外的开销。此外,由于受 st.selectbox
UI 的限制,无法选择要运行的“页面”,也无法自定义 st.set_page_config
单个页面标题,也无法使用 URL 在页面之间导航。所以,需要将现有应用程序转换为多页应用程序,Streamlit 提供了一种创建多页应用程序的方式。示例:向现有应用添加更多页面:
pages/
目录中的 .py
文件才会作为页面加载。Streamlit 忽略 pages/
目录和子目录中的所有其他文件。页面会自动显示在应用程序侧边栏内漂亮的导航 UI 中。当您单击侧边栏 UI 中的页面时,Streamlit 会导航到该页面,而无需重新加载整个前端。可以在两个 page 之间用 URL进行导航,page通过文件的label来定义有自己的url,当多个页面有相同的label,streamlit会根据排序规则选取第一个。可以通过page的url访问对应的page多页应用的文档将教你如何向应用添加页面,包括如何定义页面、构建和运行多页应用以及在页面之间导航。了解基础知识后,创建您的第一个多页应用程序!
main.py,在页面显示 main。( 可以改成 Home.py,在页面可以显示 Home )
- import sys
- import streamlit as st
- from streamlit import runtime
- from streamlit.web import cli as stcli
-
-
- def my_web_app():
- st.set_page_config(
- page_title="Hello",
- page_icon="声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/114244推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。