streamlit (python构建web可视化框架)笔记

news2024/11/20 14:16:42

文章目录

    • 一、安装使用streamlit
    • 二、streamlit使用
      • 1.展示和数据样式
      • 2.`dataframe()`生成交互表和`table()`方法生成静态表
      • 3.绘制折线图
      • 4.绘制地图
      • 5.一些组件`slider()滑动条 checkbox()确认框 selectbox()选择器`
      • 6.侧边栏
      • 7.布局分列
      • 8.多页
    • 三、Steamlit可视化简单应用--冒泡排序可视化

一、安装使用streamlit

pip install streamlit

创建一个python文件 demo.py,使用命令行运行在浏览器上 streamlit run demo.py

import streamlit as st
import numpy as np
import pandas as pd
st.title("This is my first app")
st.write("hello")

二、streamlit使用

官方文档 Streamlit documentation
中文文档

可参考博客1-专栏

streamlit提供了基于pythonweb应用程序框架,以高效灵活的方式可视化数据。主要功能

  • streamlit对数据可视化渲染,表格、地图、折线图等方法
  • web页面需要的UI 组件、会话、侧边栏、多页展示的用法。
  • 缓存数据,更快的加载页面和操作。可用于数据计算、数据库查询、接口调用、运行ML模型。
  • 支持渲染 markdown字符串,展示文档。
    • Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档(提供了标题、段落、列表、代码、图片表格、数学公式等标记)。

1.展示和数据样式

magic方法write()方法

import streamlit as st
import numpy as np
import pandas as pd
st.title("This is my first app")
# 有很多方式展示数据 (表格、数组、pandas的表格数据结构),magic方法、st.write()方法

# magic方法
st.write("magic方法使用")
df = pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
})
# pd.DataFrame( data, index, columns, dtype, copy)
# data数据,index 行标签,columns列标签 默认为np.arange(n),dtype 每一列数据类型,copy 能复制数据默认false

df  # 每当Streamlit在自己的行中看到变量或文字值时,它都会使用st.write()自动将其写入您的应用程序。

# st.write()方法,可以自动渲染 文本、数据、Matplotlib图形、Altair图表等等。
st.write("write() 方法使用")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))

在这里插入图片描述

2.dataframe()生成交互表和table()方法生成静态表

# 其他特定功能函数 st.dataframe() st.table()

st.write("dataframe()方法绘制交互式表")
dataframe = np.random.randn(5, 3)
st.dataframe(dataframe)

dataframe = pd.DataFrame(
    np.random.randn(10, 8),
    columns=('col %d' % i for i in range(8)))  # 这里定义了列号
st.dataframe(dataframe.style.highlight_max(axis=0))  # 高亮每列最大值

# 默认的dataframe功能太少,st_aggrid 插件功能更多

st.write("table()方法绘制静态表")
st.table(dataframe.style.highlight_max(axis=0))

在这里插入图片描述

3.绘制折线图

st.write("line_chart 方法绘制折线图")
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=['a', 'b', 'c']
)
st.line_chart(chart_data)

在这里插入图片描述

4.绘制地图

st.write("map()方法绘制地图")
map_data = pd.DataFrame(
    np.random.randn(100, 2) / [50, 50] + [37.76, -122.4],
    columns=['lat', 'lon'])
# 生成100个旧金山附近符合正态分布的坐标
st.map(map_data)

在这里插入图片描述

5.一些组件slider()滑动条 checkbox()确认框 selectbox()选择器

# 组件
st.write("slider()、button()、selectbox() 方法绘制组件")

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

st.text_input("Your name", key="name")

# 任何带键的组件会自动的加载到会话状态中
st.session_state.name  # name是

# 确认框
st.write("checkbox() 方法绘制确定框")

if st.checkbox('Show dataframe'):
    chart_data = pd.DataFrame(
        np.random.randn(20, 3),
        columns=['a', 'b', 'c'])
    chart_data

df = pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
})

option = st.selectbox(
    'Which number do you like best?',
    df['second column'])

'You selected: ', option

在这里插入图片描述

6.侧边栏

# 添加侧边栏组件--选择器
add_selectbox = st.sidebar.selectbox(
    'How would you like to be contacted?',
    ('Email', 'Home phone', 'Mobile phone')
)

# 添加侧边栏组件滑动条
add_slider = st.sidebar.slider(
    'Select a range of values',
    0.0, 100.0, (25.0, 75.0)
)

在这里插入图片描述

7.布局分列

st.write("多列")
col1, col2, col3 = st.columns(3)  # 分三列 col1,col2,col3
with col1:
    st.header("A cat")
    st.image("https://static.streamlit.io/examples/cat.jpg")
with col2:
    st.header("A dog")
    st.image("https://static.streamlit.io/examples/dog.jpg")
with col3:
    st.header(test1.getData())
    st.image("https://static.streamlit.io/examples/owl.jpg")

在这里插入图片描述

8.多页

定义三个python页面main_page.py,新文件夹一定取名字为pages 子文件 page2.py、page3.py

# main_page.py内容
import streamlit as st

st.markdown("# Main page 🎈")
st.sidebar.markdown("# Main page 🎈")

# page2.py内容
import streamlit as st

st.markdown("# Page 2 ❄️")
st.sidebar.markdown("# Page 2 ❄️")

# page3.py内容
import streamlit as st

st.markdown("# Page 3 🎉")
st.sidebar.markdown("# Page 3 🎉")

在这里插入图片描述

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

三、Steamlit可视化简单应用–冒泡排序可视化

streamlit 可以专门针对机器学习和数据科学开发可视化界面。在使用时可以引用pythonsklearnpytorchtensorflownumpyopencv等库,下面基于streamlit实现了冒泡排序可视化。

在这里插入图片描述

详细实现

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

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

相关文章

java获取当前系统时间

在Java中,可以使用以下几种方法获取当前系统时间: 方法1:使用java.util.Date类 java import java.util.Date; public class Main { public static void main(String[] args) { Date date new Date(); System.out.println("当前时间&…

短视频app开发:如何设计个性化推荐算法

短视频app的迅速崛起已经成为了移动互联网领域中的一股热潮。然而,如何设计个性化推荐算法已经成为了这个领域中的一个核心问题。在本文中,我们将深入探讨如何为短视频app开发设计个性化推荐算法,以及如何使用短视频源码来实现这一目标。 简…

类间关系和内部类和数组

Final关键词 定义Pepole类,运用了final修饰方法eat(),该方法不能被改写,但可以随类进行继承。 用final修饰的类,不能有子类。 内部成员类定义方式 外部类.成员类 对象名 new 外部类().new 内部类。 局部…

[附源码]计算机毕业设计基于SSM和UNIAPP的选课APP

项目初衷 教育要实现现代化,高质量发展,就必须拥抱互联网。在此推动下,教育APP软件的开发非常受欢迎。通过APP自主选择教育课程的专业和课程,教授讲课,课程APP可以在线合作。通过APP自主选课的方式,更能激…

深度强化学习——actor-critic算法(4)

一、本文概要: actor是策略网络,用来控制agent运动,你可以把他看作是运动员,critic是价值网络,用来给动作打分,你可以把critic看作是裁判,这节课的内容就是构造这两个神经网络,然后…

项目结束倒数2

今天,解决了,多个点的最短路问题 用的dfs,配上了floyed计算出的广源距离 难点是要记录路线,dfs记录路线就很烦 但是好在结束了,经过无数的测试,确保没啥问题(应该把) 来看看我的代码 void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_A…

Java核心技术 卷1-总结-14

Java核心技术 卷1-总结-14 映射更新映射项弱散列映射链接散列集与映射枚举集与映射 视图与包装器轻量级集合包装器 映射 更新映射项 处理映射时的一个难点就是更新映射项。正常情况下,可以得到与一个键关联的原值,完成更新,再放回更新后的值…

【二叉树】遍历二叉树

前言 二叉树有前中后序和层序四种常用的遍历方式,今天我们来学习一下如何用这四种方法遍历二叉树。 前序:根、左、右 中序:左、右、根 后序:左、右、根 层序:第一层、第二层… 递归 递归是一种将复杂问题不断细分成…

RHCE(五)

目录 一.判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间 1.创建脚本test1.sh 2.下载邮件服务并执行 3.测试 4.做计划任务 二.判断web服务是否运行(1、查看进程的方式判断该程…

ChatGPT 速通手册——模仿唐诗宋词,和模仿莎士比亚十四行诗的中英文差距

模仿唐诗宋词,和模仿莎士比亚十四行诗的中英文差距 根据前文介绍的三大反例特性,我们可以尝试给出几个典型的反例。比如诗词创作,尤其是长短句约束更加严格的词牌,对照反例特性: 有明确且唯一可行的标准定义——一个…

Windows OpenVino安装squeezenet1.1失败 —— 已解决

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,YOLO,python领域博主爱笑的男孩。擅长深度学习,YOLO,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollec…

【排序】冒泡排序与快速排序(三个版本+非递归图示详解哦)

全文目录 引言冒泡排序快速排序思路实现Hoare版本快排优化 挖坑法前后指针法 快排非递归版本思路实现 总结 引言 在这篇文章中,将继续介绍排序算法:冒泡排序与快速排序: 它们都属于交换排序,即通过两两比较交换,将较…

小朋友崇拜圈+灌溉(JAVA解法)

目录 小朋友崇拜圈 题目链接: 题目描述 输入描述 输出描述 输入输出样例 灌溉 题目链接: 题目描述 输入描述 输出描述 输入输出样例 小朋友崇拜圈 题目链接: https://www.lanqiao.cn/problems/182/learning/?page5&first_c…

手撕源码(一)HashMap-JDK8

目录 1.使用示例2.new HashMap<>() 解析2.1 加载因子2.2 构造方法 3.put() 解析3.1 原始put(k, v)3.2 计算哈希1&#xff09;为什么要进行二次hash&#xff1f;2&#xff09;二次hash计算示例&#xff1a;3&#xff09;为什么使用 (length-1)&hash 而不是 hash%lengt…

互联网医院系统|线上问诊系统定制|互联网医院源码开发技术

当下医疗成为人们比较关注的问题&#xff0c;移动医疗技术不断的进步&#xff0c;互联网医院系统成为了医疗企业发展的必经之路&#xff0c;通过移动终端与互联网医院系统进行连接&#xff0c;实现医疗服务的远程交互与管理。可以使医疗机构的医生通过移动设备随时随地的查看患…

词的表示方法笔记——词向量+代码练习

词的表示方法&#xff1a; 一、one-hot&#xff08;最简单&#xff09; 独热编码是一种将单词转化为稀疏向量的方法&#xff0c;其中每个单词都表示为一个只有一个元素为1其余元素均为0的向量&#xff0c;其维度由词库的大小决定。。例如&#xff0c;对于包含 4个单词的词汇表 …

Python二分查找(折半查找)的实现

时间复杂度 最优时间复杂度&#xff1a;O(1) 最坏时间复杂度&#xff1a;O(logn) 思路 对有序的顺序表进行查找&#xff0c;以下标查找&#xff0c;每次取一半查找&#xff0c;如[1,2,3,4,5,6,7,8,9]&#xff0c;查3, 下标从0~8&#xff0c;(08)//24,对比折半到下标为2的元素…

【基础算法】栈和队列

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招算法的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于代码随想录进行的&#xff0c;每个算法代码参考leetcode高赞回答和…

手写axios源码系列二:创建axios函数对象

文章目录 一、模块化目录介绍二、创建 axios 函数对象1、创建 axios.js 文件2、创建 defaults.js 文件3、创建 _Axios.js 文件4、总结 当前篇章正式进入手写 axios 源码系列&#xff0c;我们要真枪实弹的开始写代码了。 因为 axios 源码的代码量比较庞大&#xff0c;所以我们这…

Xilinx FPGA下如何加快QSPI Flash加载速度

1. 首先&#xff0c;不同型号的FPGA对外部QSPI Flash支持的最高频率是不一样的。XC6SLX45支持的最高频率仅为26MHz&#xff0c; 而XC7K325T支持的最高频率高达66MHz。 所以&#xff0c;当我们添加 set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] 的时候&…