翻译自用,侵删,未经允许不得转载。
学习如何使用streamlit的方式就是直接上手用。当您在学习本指北 的时候,请务必尝试每个方法。当app运行时,你每次添加一个新元素并保存,Streamlit UI都会问你是否返回app并显示改变。这种方式可以让你在一个快速交互式循环中学习:写代码,保存,查看输出,然后再补充代码,直到你满意结果。我们的目标是使用 Streamlit 为您的数据或模型创建一个交互式应用程序,同时使用 Streamlit 来审查、调试、完善和共享您的代码。
在你开始前,还需要安装以下工具:
若你还未完成安装,可以先花几分钟看下基本概念来熟悉下streamlit的数据流模型。
无论你是用哪种包管理工具,我们都建议你在虚拟环境中运行下面的命令。 这样可以确保Streamlit引入的依赖包不会影响你的其他Python项目。
你可以使用如下任意一种Python虚拟环境:
$ pip install streamlit
Now run the hello world app just to make sure everything it’s working:
$ streamlit hello
现在已经安装了所有必要的软件,让我们创建一个新的Python脚本并导入Streamlit。
打开IDE或编辑器创建一个 first_app.py
。
导入 Streamlit.
import streamlit as st
# To make things easier later, we're also importing numpy and pandas for
# working with sample data.
import numpy as np
import pandas as pd
运行应用,这会在你的默认浏览器中开启一个新的tab页。目前还是一篇空白,不过没关系。
$ streamlit run first_app.py
运行Streamlit应用和运行其他Python脚本没有区别。任何时候当你需要查看应用 的界面效果时,都可以使用这个命令。
小贴士:
你知道吗?你也可以丢给streamlit run一个URL让它来启动应用!当你使用Github Gists时这 会感觉很爽。例如:
$ streamlit run https://raw.githubusercontent.com/streamlit/demo-uber-nyc-pickups/master/app.py
你可以在终端里按 Ctrl+c来随时中止应用 .
Streamlit有很多方法为应用添加文本。可以查看下面的API reference 了解详细信息。
现在让我们为应用添加一个标题试试:
st.title('My first app')
这就行了!你的应用有了一个标题。你可以使用不同的文本方法为你的应用 添加内容,或者使用万能方法 st.write()
添加 markdown内容.
根据magic commands, st.write()
是Streamlit的瑞士军刀. 你可以把任何东西丢给st.write()
: 文本、数据、Matplotlib图表、Altair图表等等。别担心,Streamlit可以 自动识别数据类型并正确绘制。
st.write("Here's our first attempt at using data to create a table:")
st.write(pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
}))
Streamlit也提供了针对特定类型数据的方法例如 st.dataframe()
and st.table()
, 你也可以用这些更专门化的方法来显示数据。查看后续章节中的相关API来理解 合适使用这些专门化方法。
小贴士:
在这个快速上手教程中,我们使用少量数据以便你可以快速推进. 在后续教程 Tutorial on creating a data explorer 中我们会从第三方API载入数据并利用@st.cache 来缓存它。.
如果你用的是Python 3,那么你不调用任何Steamlit方法也可以编写Streamlit应用。 Streamlit支持“magic commands,” 这意味着你可以根本就不使用 st.write()
!可以使用下面的内容代替前一节的代码:
"""
# My first app
Here's our first attempt at using data to create a table:
"""
df = pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
})
df
魔术方法的运行机制很简单。任何时候当Streamlit看到一个变量或字面量,它 就会自动调用st.write()
. 详情参见magic commands.
Streamlit指出一些流行的数据表库,例如 Matplotlib, Altair, deck.gl, and more. 在这一节,你将学习到如何在app中添加条形图,折线图,地图。
使用 st.line_chart()
可以在app中绘制一个折线图. 我们将使用numpy生成一些随机样本并绘制出来.
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
使用st.map()
可以在地图上显示数据点。 让我们使用Numpy来 生成一些样本数据,然后在旧金山的地图上把这些点画出来:
map_data = pd.DataFrame(
np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
columns=['lat', 'lon'])
st.map(map_data)
Streamlit支持创建勾选框,按钮,滑块等等部件来进行直接交互。参见 API reference 看到完整的交互部件列表。
复选框的一个使用场景就是用来显示或隐藏应用中的某个图表或区域。st.checkbox()
接收单一参数作为复选框的标签。在下面的示例代码 中,使用复选框来切换条件语句:
if st.checkbox('Show dataframe'):
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
使用st.selectbox
来从序列中进行选择。你可以写入任何 需要的选项,或者传入一个数据或数据帧列。
让我们使用之前创建的数据帧对象。
option = st.selectbox(
'Which number do you like best?',
df['first column'])
'You selected: ', option
一种常见的布局是将组件放在侧栏,这样整个界面显得更干净。让我们一起来看看如何使用 st.sidebar
达到这个目的.
option = st.sidebar.selectbox(
'Which number do you like best?',
df['first column'])
'You selected:', option
大多数以st.sidebar.[element_name]()
方式调用的组件都可以放在侧栏. 以下是一些例子展示了其用法: st.sidebar.markdown()
, st.sidebar.slider()
, st.sidebar.line_chart()
.
注意st.write
(应该使用st.sidebar.markdown()
来替代), st.echo
,和 st.spinner
是例外. 不过请放心,我们目前也在努力为这些产品增加支持!
如果应用中有长时间的计算,你可以使用 st.progress()
来实时显示进度状态。
首先,让我们引入time包。我们将使用time.sleep()
方法来模拟长时间的计算:
import time
现在,让我们创建一个进度条:
'Starting a long computation...'
# Add a placeholder
latest_iteration = st.empty()
bar = st.progress(0)
for i in range(100):
# Update the progress bar with each iteration.
latest_iteration.text(f'Iteration {i+1}')
bar.progress(i + 1)
time.sleep(0.1)
'...and now we\'re done!'
构建Streamlit应用程序后,您可能希望通过电子邮件或Slack与同事讨论其中的一些内容,或者在Twitter上与世界分享。 Streamlit的内置截屏录像机是实现此目标的好方法。 有了它,您只需单击几下即可记录,叙述,停止,保存和共享。
开始录屏: 点击位于app右上角的 (☰), 选择 Record a screencast, 在录音开始之前,你会看到一个倒计时ーー这意味着录音时间到了。
结束录屏: 点击(☰) 选择 Stop recording (或者按ESC).按照提示预览录像并将其保存到磁盘。 就这样,您就可以共享Streamlit应用了。
这就是开始,现在你可以去建立自己的应用程序!如果你遇到困难,这里有几件事你可以做。
$ streamlit --help
获得一个快速帮助