streamlit -- 基本概念

翻译自用,侵删,未经允许不得转载。

文章目录

  • 基本概念
    • 开发流
    • 数据流
    • 绘制内容
    • 部件
    • 侧边栏
    • 缓存
    • App 模型
    • _images/app_model.png
    • 下一步

基本概念

Streamlit使用起来很简单。你只需把streamlit命令写到一个py文件,然后使用streamlit run命令运行就可以:

$ streamlit run your_script.py [-- script args]

一旦你运行上面显示的脚本,一个本地的 Streamlit 服务器就会运行,你的应用程序将在一个新的标签页打开你的默认网页浏览器。这个应用程序就是你的画布,在这里你可以绘制图表、文本、小工具、表格等等。

在app中绘制的内容取决于你. 例如 st.text 会在app上绘制文本, st.line_chart 会绘制折线图. 参考API 文档 可以看到所有的命令。

注意

当传递一些自定义参数时,它们必须在两个破折号之后传递。否则,参数就会被解释为Streamlit本身的参数。

小贴士
若你想通过一个URL来跑一个streamlit,可以利用Github Gists,例如:

$ streamlit run https://raw.githubusercontent.com/streamlit/demo-uber-nyc-pickups/master/app.py

开发流

每次你想更新你的应用程序,只要保存源文件。当你这样做时,Streamlit会检测到是否有变化,并询问你是否要重新运行你的应用程序。选择屏幕右上方的Always rerun,当你每次更改源代码时,它就会自动更新你的应用程序。

这允许您在一个快速交互循环中工作:您键入一些代码,保存它,现场试用它,然后键入更多代码,保存它,试用它,直到您满意的结果。 这种方式能让你更快的学习。

小贴士
当开发一个streamlit app时,推荐你将编辑器和浏览器放在同一屏幕,这样你可以所见即所得。


数据流

Streamlit的体系结构使您可以像编写普通的Python脚本一样编写应用程序。 要解锁此功能,Streamlit应用程序具有独特的数据流:每次必须在屏幕上更新某些内容时,Streamlit都会从头到尾重新运行整个Python脚本。

这可能在两种情况下发生:

  • 当你修改你的app源代码时
  • 每当用户与应用程序中的小部件进行交互时。 例如,当拖动滑块,在输入框中输入文本或单击按钮时。

为了使所有这些快速无缝地进行,Streamlit在后台为您做一些繁重的工作。 起到这个作用主要依赖于是@ st.cache装饰器,它允许开发人员在应用重新运行时跳过某些昂贵的计算。 我们将在后面介绍缓存。


绘制内容

调用适当的API命令就可以:

import streamlit as st
x = 4
st.write(x, 'squared is', x * x)

以上我们使用了 st.write() 命令。 当你想在屏幕上绘制些什么, st.write()是一个不错的开头! 它尝试根据参数的数据类型来猜测其参数的最佳视觉表示形式,因此,诸如将数据框绘制为漂亮的表格,将Matplotlib图形绘制为图表,等等。
你也可以使用 Streamlit 魔法命令来跳过 st.write() 命令 就像这样:

import streamlit as st
x = 4
x, 'squared is', x * x  #  Magic!

如果您想执行更高级的操作,例如更改特定设置,绘制动画或按顺序插入内容,请在我们的API文档和高级概念页面中查看其他可用的Streamlit命令。


部件

当你想将数据或模型设置成可调状态的时候,使用 st.slider(), st.button()st.selectbox()等部件是不错的选择。实现起来也很容易—把部件视为变量一样就可以。

import streamlit as st
x = st.slider('x')  #  this is a widget
st.write(x, 'squared is', x * x)

初次运行app,输出显示"0 squared is 0"。每次使用部件进行交互时,streamlit会将脚本重新执行,在此过程中,将小部件的当前状态分配给您的变量。
例如,若用户将滑块slider移动到10,Sreamlit 将重跑代码并将上述x设置为10,此时输出为"10 squared is 100"


侧边栏

使用 st.sidebar可以轻易的将部件组织在左侧侧边栏。每个传到 st.sidebar 的元素将被固定到左边侧边栏, 这样可以让用户在使用UI进行控制的时候专注于关注app内容。

例如,若你想添加一个多选框或者滑块到侧边栏,使用st.sidebar.sliderst.siderbar.selectbox 替换 st.sliderst.selectbox即可。

import streamlit as st

# Add a selectbox to the sidebar:
add_selectbox = st.sidebar.selectbox(
    'How would you like to be contacted?',
    ('Email', 'Home phone', 'Mobile phone')
)

# Add a slider to the sidebar:
add_slider = st.sidebar.slider(
    'Select a range of values',
    0.0, 100.0, (25.0, 75.0)
)

注意
边栏当前不支持以下Streamlit命令:st.write(应使用st.sidebar.markdown()代替),st.echost.spinner


缓存

即使从Web加载数据,处理大型数据集或执行昂贵的计算,Streamlit缓存也可以使您的应用程序快速执行。
使用装饰器 @st.cache 装饰需要被缓存的函数即可:

@st.cache  #  This function will be cached
def my_slow_function(arg1, arg2):
    # Do something really slow in here!
    return the_output

当使用@st.cache 装饰器标记一个函数时,这将告诉steamlit在此函数被调用的时候应当检查以下事情:

  1. 缓存函数的输入参数
  2. 缓存函数使用的外部变量的值
  3. 缓存函数主体
  4. 缓存函数中调用到的函数的主题

若streamlit是初次看到这四个部分的确切值,组合方法和顺序,那么streamlit将执行这个函数并将结果保存在本地缓存中。下次当缓存函数被调用的时候,若这些部分没有变化,streamlit将直接返回之前缓存中的结果作为输出。

关于Streamlit缓存的配置参数,限制等更多信息,详见see Caching.


App 模型

现在您已经对所有的单个部分有了更多的了解,让我们结束这个循环并回顾一下它是如何协同工作的:

  1. Streamlit apps 是一个从头到尾执行的py脚本
  2. 每当用户打开一个指向你的应用程序的浏览器标签,脚本就会重新执行
  3. 当脚本执行时,Streamlit 在浏览器中实时绘制其输出
  4. 脚本使用 Streamlit 缓存来避免重新计算代价高昂的函数,因此更新速度非常快
  5. 每次用户与小部件交互时,都会重新执行脚本,并在运行期间将该小部件的输出值设置为新值。

streamlit -- 基本概念_第1张图片

下一步

  • Get started with Streamlit
  • Read up on advanced concepts
  • Build your first app

Next
Previous

你可能感兴趣的:(文档翻译,python,python,可视化,streamlit)