streamlit 入门demo

一、介绍

Streamlit 是一个用于创建数据应用程序的 Python 库,它致力于简化从数据脚本到可部署应用程序的整个过程。通过 Streamlit,你可以使用熟悉的 Python 语言创建交互式的、美观的数据应用,而无需深入了解前端开发。

二、优势和特点

  • 简单易用: Streamlit 的设计理念是简单易用。你只需要几行代码就能创建一个交互式应用,无需专业的前端知识。

  • 即时反馈: Streamlit 提供即时预览功能,你可以在编辑代码时实时查看应用的变化,使迭代开发更加高效。

  • 自动化部署: Streamlit 应用可以轻松部署到云上,例如使用 Streamlit Sharing、Heroku、AWS、或其他托管服务。

  • 丰富的组件: Streamlit 提供了许多内置的组件,如按钮、滑块、文本框等,以及用于绘制图表的简化接口。

  • 兼容性: Streamlit 兼容常见的 Python 数据科学库,如 Pandas、Matplotlib、Plotly、Altair 等,使得数据分析和可视化更加方便。

  • 自定义主题: Streamlit 支持自定义主题,使得你可以为你的应用选择合适的颜色和样式。

  • 互动性: Streamlit 提供了简单的方式来实现用户输入的处理,使得你可以创建具有响应性的应用。

三、简单演示

3.1 创建py文件

Streamlit需要在命令行页面运行后在本地浏览器进行查看,所以相关的代码需要在一个.py文件中进行编写

比如我们创建一个简单的可视化页面,创建一个 “数据可视化.py”文件
在这里插入图片描述

3.2 导入相关的包

我们做一个最简单的演示,所以只用最简单的数据进行展示

import streamlit as st
import numpy as np
import matplotlib.pyplot as plt

streamlit包需要pip install streamlit下载

3.3 生成数据

我们用numpy随机生成一组数字,实际工作中只需要将数据进行替换

x = np.arange(1, 11)  # 生成1到10的数字

3.4 画图

# 画折线图
plt.plot(x, x**2, label='y = x^2')# 添加标签和标题
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('折线图示例')
plt.legend()

3.5在 Streamlit 中展示折线图

st.pyplot()

3.6 本地启动

启动终端,进入到 数据可视化.py文件目录下,运行

streamlit run 数据可视化.py

在这里插入图片描述
在这里插入图片描述

进入8501端口本地地址,便可以查看相应的内容。

3.7 实时修改

streamlit还有一个比较好地方就是支持实时修改,我们在代码修改完内容后,只需要在页面Rerun一下(或者按一下R键)就可以实现刷新,不需要重新运行程序

比如我们把title改一下:

plt.title('折线图2014-01-05')

在这里插入图片描述
修改后
在这里插入图片描述

四、进阶

做一个动态的折线图,如下
在这里插入图片描述

4.1 开头展示

展示内容一般直接使用st.write(),将需要展示的内容写在括号里面
或者使用st.markdown(),可以写入markdown的格式进行展示

st.write("""用Streamlit演示了绘图和动画的结合。我们在一个大约5秒钟的循环中生成一串随机数。
"""
)

4.2 设计完成度

progress_bar = st.progress(0)
status_text = st.empty()

完成度由两部分组成

  • 长条图形
  • 完成状态/完成比

st.progress(0):初始长度设为0
st.empty():初始展示内容为空

设计思想是一步一步的展示

4.3 辅助设计

# 生成示例数据
data = {'Index': [],'Value': []}
df = pd.DataFrame(data['Value'])# 创建折线图
chart = st.line_chart(df)

设计一个空的DataFrame,做好数据格式的设计
折线图我们使用st.line_chart进行创建

4.4 动态展示

循环生成数据,动态展示

# 模拟逐步添加新行
for i in range(101):new_data = {'Index': i,'Value': np.random.randn()}new_row = pd.DataFrame([new_data])#新数据生成status_text.text("%i%% Complete" % i)#进度更新progress_bar.progress(i)#进度条更新# 添加新行到折线图chart.add_rows(new_row['Value'])#折线图增加数据# 模拟延迟time.sleep(0.1)

这样就生成了一个动态展示的效果。

之所以做这样的效果是因为我们在进行深度学习训练时,想要实时查看loss和准确度的变化,下篇文章将会展示如何使用streamlit进行深度学习展示。

对于一个深度学习或者机器学习工程师不建议系统学习streamlit,用到什么功能搜索下就可以了,系统学习费时还不一定学到有用的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式基础概念

分布式基础概念 1 微服务 微服务架构风格,就像是把一个单独的应用程序开发为一套小服务,每个小服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API。这些服务围绕业务能力来构建,并通过完全自动化部署机制…

AUTOSAR从入门到精通-漫谈autosar软件架构(七)

目录 前言 原理 AUTOSAR软件开发现状 Autosar分层架构 基础软件层(BSW)

【Path的使用】Node.js中的使用Path模块操作文件路径

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:Node.js 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇…

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…

Vue3-38-路由-路由的懒加载

什么是路由的懒加载 一句话概括 : 懒加载,就是在初次用到的时候才执行加载;而非一上来就全部加载完毕。优点 : 可以提高项目的访问效率。因为一上来不用加载所有的资源。建议 : 项目中的所有路由配置都配置为 懒加载…

使用 KubeSphere 与极狐GitLab 打造云原生持续交付系统

极狐GitLab 简介 极狐GitLab 是一个一体化的 DevOps 平台,可以简单理解为 GitLab 在国内的“发行版”。是由极狐(GitLab)公司推出的产品(极狐(GitLab)公司是以“中外合资3.0”模式成立的公司,在国内独立运营,为国内用户提供适合本…

test mutation-00-变异测试概览

拓展阅读 test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍 test 系统学习-05-test jacoco 测试覆盖率与 idea 插件 test 系统学习-06-test jacoco SonarQube Docker learn-29-docker 安装 sonarQube with mysql Ubuntu Sonar 突变测试是什么? …

2024你好!

在刚刚过去的一年里,科技行业犹如璀璨的星辰照亮了全球的进步之路。特别是在人工智能的疆域中,大模型技术犹如破晓的曙光,以其数十亿乃至千亿级别的参数力量,掀起了前所未有的变革浪潮。 2023年,大模型技术无疑成为了人…

谷歌浏览器启用实时字幕功能

在 Chrome 中使用“实时字幕”功能 - Google Chrome帮助 在 Chrome 中使用“实时字幕”功能 从计算机上的 Chrome 浏览器中,您可以使用“实时字幕”功能自动为视频、播客、游戏、直播、视频通话或其他音频媒体生成字幕。音频和字幕均在本地处理,并会保…

K8S学习指南(64)-K8S源代码走读之Kubelet

文章目录 前言Kubelet 的代码结构Kubelet 的核心逻辑1. Pod 生命周期管理1.1 Pod 启动逻辑1.2 Pod 状态管理1.3 Pod 事件处理 2. 容器启动和监控2.1 容器启动逻辑2.2 容器监控 3. 容器网络和存储3.1 容器网络3.2 容器存储 4. 资源管理4.1 资源分配 5. 启动和注册 Kubelet5.1 启…

【动态规划】【字符串】132.分割回文串 II

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 字符串 LeetCode132. 分割回文串 II 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 1: 输入&#x…

基于R语言(SEM)结构方程模型教程

详情点击链接:基于R语言(SEM)结构方程模型教程 01、R/Rstudio (2)R语言基本操作,包括向量、矩阵、数据框及数据列表等生成和数据提取等 (3)R语言数据文件读取、整理(清洗)、结果存储等(含tidve…

提升图像分割精度:学习UNet++算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构4.1 UNet 的网络结构4.2 UNet 各层的作用 五、训练…

Simply简洁博客主题源码 | EmlogPro主题模版

Simply是一款简约风格的Emlog博客模板,响应式布局、界面简单大方,实用性强! 支持夜间模式,采用localStorage存储配置。IOS系统下支持随系统自动切换浅/深色模式。 文章页支持显示文章字数及阅读时间。 支持http/https 响应式主…

基于PyTorch的Transformer组件实现

最近看了不少介绍LLM工作原理的文章,发现每一篇都会试图跟读者讲明白作为baseline的Transformer架构到底长啥样。但是好像比较少有代码实现的示例和具体的例子帮助理解。于是自己也想尝试着写一篇含有代码实现和具体例子解释的文章,希望能够给喜欢编程朋…

fmincon函数求解非线性超越方程的学习记录

最近的算法中用到了fmincon函数,寻找多变量非线性方程最小值的函数;因此学习一下; fmincon函数的基础语法如下所示: fmincon函数是为了求解下列方程的最小值; b 和 beq 是向量,A 和 Aeq 是矩阵&#xff0c…

2024年最新51单片机+Proteus嵌入式开发入门实战完整版教程

我们为什么要学嵌入式开发? 嵌入式系统是一种专为特定任务或特定应用设计的计算机系统。与通用计算机系统不同,嵌入式系统通常具有更小的体积、更低的功耗和更强的可靠性。由于这些特点,嵌入式系统广泛应用于工业控制、医疗设备、智能家居、…

【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…

JVM工作原理与实战(七):类的生命周期-初始化阶段

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载&#xff08;Loading&#xff09; 2.连接&#xff08;Linking&#xff09; 3.初始化&#xff08;Initialization&#xff09; 4.使用&#xff08;Using&…

canvas文字设置(含最大宽度)的示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…