Streamlit开发手册

基本概念
数据流 缓存 UI组件 App模型
快速上手教程
前置要求 设置虚拟环境 导入Streamlit 添加应用标题 添加数据 使用魔术方法 绘制折线图 绘制地图 使用复选框切换数据的显示 使用列表选择框 将组件放在侧栏 显示进度
教程 - 数据浏览应用
创建应用 读取数据 缓存 查看原始数据 绘制直方图 在图上叠加数据 使用滑杆过滤结果 使用按钮切换数据 整合
教程 - 远程运行Streamlit
准备工作 SSH及端口转发 在云实例上安装Streamlit 远程运行你的代码 编辑远程脚本
高级概念
数据显示与样式 插入编外数据 元素动画效果 向图表添加数据 返回Stream调用的值 高级缓存
API参考手册
魔术方法 st.title - 显示应用标题 st.header - 显示主标题 st.subheader - 显示副标题 st.text - 显示文本 st.markdown - 显示markdown文本 st.code - 显示代码块 st.write - 通用显示方法 st.dataframe - 显示可交互数据帧 st.table - 显示静态数据表 st.json - 显示JSON对象 st.pyplot - 显示matplotlib图表 st.altair_chart - 显示Altair图表 st.vega_lite_chart - 显示vega-lite图表 st.plotly_chart - 显示plotly图表 st.bokeh_chart - 显示Bokeh图表 st.deck_gl_chart - 显示Deck.GL图表 st.graphviz_chart - 显示graphviz图表 st.line_chart - 显示折线图 st.area_chart - 显示区域图 st.bar_chart - 显示棒状图 st.map - 显示地图 st.image - 显示图像 st.audio - 显示音频播放器 st.video - 显示视频播放器 st.button - 显示按钮 st.checkbox - 显示复选框 st.radio - 显示单选框 st.selectbox - 显示列表选择框 st.multiselect - 显示列表多选框 st.slider - 显示滑动拉杆 st.text_input - 显示文本输入框 st.number_input - 显示数字输入框 st.text_area - 显示多行文本输入框 st.date_input - 显示日期输入框 st.time_input - 显示时间输入框 st.echo - 显示应用源代码 st.progress - 显示进度 st.spinner - 显示执行状态 st.balloons - 显示庆祝气球 st.error - 显示错误信息 st.warning - 显示警告信息 st.info - 显示提示信息 st.success - 显示成功信息 st.exception - 显示异常信息 st.empty - 添加占位符 st.help - 显示帮助信息 st.get_option - 读取配置项的值 st.set_option - 设置配置项的值 st.cache - 函数缓存装饰器 dg.add_rows - 追加数据行
命令行参考手册
streamlit help - 查看帮助信息 streamlit run - 运行应用 streamlit config show - 查看配置选项 streamlit cache clear - 清理缓存 streamlit docs - 查看文档 streamlit version - 查看版本
常见问题解答
如何更改端口?
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

st.write - 通用显示方法

streamlit的write方法属于瑞士军刀性质,根据你传入的参数不同 而有不同的显示效果。

与其他streamlit方法不同,write方法有一些独特的性质:

  • 你可以传入多个要显示的参数
  • 显示效果依赖于传入的参数
  • 返回值为None,因此在应用中它会占用一个不可复用的槽位

方法原型

streamlit.write(*args, **kwargs)

参数:

  • *args:一个或多个要显示的对象参数,支持如下类型的调用:
    • write(string) :显示输出格式化处理后的markdown内容
    • write(data_frame) : 表格形式显示Pandas的DataFrame对象
    • write(error):显示输出异常信息
    • write(func):显示指定函数的信息
    • write(module):显示指定模块的信息
    • write(dict) :使用一个交互组件显示字典对象的内容
    • write(obj):默认行为是显示输出str(obj)的结果
    • write(mpl_fig):显示指定的Matplotlib图表
    • write(altair):显示指定的Altair图表
    • write(keras):显示指定的Keras模型
    • write(graphviz):显示指定的Graphviz图表
    • write(plotly_fig):显示指定的Plotly图表
    • write(bokeh_fig) :显示指定的Bokeh图表
  • unsafe_allow_html :是否允许不安全的HTML标签,布尔类型,默认值:false

示例代码

下面的代码显示解析后的Markdown文本,虽然传入的是字符串:

>>> write('Hello, *World!*')

效果如下:

write方法也支持其他数据格式,例如数值、Pandas数据帧、排序对象等:

>>> st.write(1234)
>>> st.write(pd.DataFrame({
...     'first column': [1, 2, 3, 4],
...     'second column': [10, 20, 30, 40],
... }))

效果如下:

write dataframe

你也可以传入多个参数,例如:

>>> st.write('1 + 1 = ', 2)
>>> st.write('Below is a DataFrame:', data_frame, 'Above is a dataframe.')

效果如下:

write multi args

write命令也可以传入图表对象!例如:

>>> import pandas as pd
>>> import numpy as np
>>> import altair as alt
>>>
>>> df = pd.DataFrame(
...     np.random.randn(200, 3),
...     columns=['a', 'b', 'c'])
...
>>> c = alt.Chart(df).mark_circle().encode(
...     x='a', y='b', size='c', color='c')
>>>
>>> st.write(c)

效果如下:

write chart