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

文章目录

    • 一、安装使用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实现了冒泡排序可视化。

在这里插入图片描述

详细实现

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科学防雷接地和雷电防护方案

说到防雷,可能不少人首先会想到避雷针,而“避雷针”这一概念,很容易让大家对防雷的概念造成误解。 误解1: 避雷针是用来“避雷”的。 其实,避雷针的学名叫“接闪器”,不是用来“避开雷击”的,而是用来“迎…

传统机器学习(七)支持向量机(2)sklearn中的svm

传统机器学习(七)支持向量机(2)sklearn中的svm 2 sklearn中的svm 2.1 LinearSVC及SVC参数详解 2.1.1 SVC参数 class sklearn.svm.SVC(*,C1.0, kernelrbf, degree3, gammascale, coef00.0, shrinkingTrue, probabilityFalse, tol0.001, cache_size200, class_weightNone, ve…

为什么企业要做大规模敏捷?

背景 软件工程里一个重要的指标就是“可用的软件”,敏捷宣言里也同样告诉我们“工作的软件高于详尽的文档”,那“可用的软件”、“工作的软件”意味着什么呢?在我的理解里,可以经历用户 “千锤百炼”的软件就是一个“可用的软件”…

这些vue基本语法,你掌握了吗

文章目录 一、 vue 项目重点概念介绍1. 单页面应用程序2. 单文件组件3.数据驱动视图 二、 vue 基本结构1、template2、script3、style 三、 vue 常用指令介绍1、内容渲染指令(1)插值表达式 {{xxx}} —常用方式(2)v-text&#xff0…

912. 排序数组

1.题目: 2.我的代码: C语言: /*** Note: The returned array must be malloced, assume caller calls free().*/ int* sortArray(int* nums, int numsSize, int* returnSize) {//希尔排序int gap numsSize;//多次预排while (gap > 1) {/…

Ansys Zemax | 如何模拟双折射偏振器件

这篇文章介绍了什么是双折射现象、如何在OpticStudio中模拟双折射 (birefringence)、如何模拟双晶体的双折射偏振器以及如何计算偏振器的消光比。(联系我们获取文章附件) 什么是双折射现象 一般的光学材料都是均匀的各向同性的,也就是说无论光…

STM32物联网实战开发(6)——PWM驱动LED灯

PWM驱动LED灯 之前是使用标准库函数配置引脚输出PWM控制呼吸灯,因为开发板上的蜂鸣器是有源的,所以这次还是用来确定LED灯,这次使用的是HAL库,用CubeMX软件初始化PWM功能 PWM输出原理 Period:周期,单位是秒…

语音处理加窗分帧

语音处理加窗分帧 一、分帧 语音数据和视频数据不同,本没有帧的概念,但是为了传输与存储,我们采集的音频数据都是一段一段 的。为了程序能够进行批量处理,会根据指定的长度(时间段或者采样数)进行分段,结构化为我们编程…

Javaweb | 转发、重定向

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 转发 转发与页面跳转 转发 转发的作用在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理 页面跳转 使用forward跳转时&am…

拍卖小程序开发:从需求分析到设计实现

在当今数字时代,拍卖小程序已经成为了一个重要的销售和交易工具。拍卖小程序的开发不仅能够提供高效的销售渠道,还能够为用户提供全新的购物体验。因此,开发一个拍卖小程序成为了许多商家的首要任务。 拍卖小程序的开发可以帮助商家拓展销售…

Linux下实现共享内存的两种机制(附源码)

START Hello 大家好。 今天来讲一下Linux进程通信中重要的通信方式:共享内存作为Linux软件开发攻城狮,进程间通信是必须熟练掌握的重要技能,而共享内存是在程序开发中常用的也是重要的一种进程间通信方式。 下面我们就来聊一聊Linux下进程间…

pytest自动化框架之allure测试报告的用例描述设置

allure测试报告的用例描述相关方法;如下图 allure标记用例级别severity 在做自动化测试的过程中,测试用例越来越多的时候,如果执行一轮测试发现了几个测试不通过,我们也希望能快速统计出缺陷的等级。 pytest结合allure框架可以对…

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题:AutoNeRF:使用自主代理训练隐式场景表示 作者:Pierre Marz…

SaaS云HIS系统源码功能介绍

SaaS云HIS首页功能:包括工作计划、预警、主功能菜单、医院机构公告。 一、工作计划 1.值班概况:值班日期、值班时间、值班科室(内科、外科等) 2.待处理患者:内科人数、外科人数等 病历统计:入院病历、出…

华为面试题:1+4=5,2+5=12,3+6=21,问8+11=?网友:幼儿园级别

面试,一直都是职场人士绕不过去的坎,对于有的人来说,或许更擅长日常的工作,在面试环节可谓是自己的薄弱环节,但对于有的人来说,相比于工作,更擅长应付面试! 最近,有一位…

《面向基于人工智能的学习健康系统,使用心电图进行人群水平的死亡率预测》阅读笔记

目录 一、摘要 二、十个问题 Q1论文试图解决什么问题? Q2这是否是一个新的问题? Q3这篇文章要验证一个什么科学假设? Q4有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? Q5论文中提到…

过来人转本考试后的感悟和经验,真的很受用

过来人转本考试后的感悟和经验,真的很受用!转本不仅是分数的较量,也是信息收集、时间管理、学习能力、毅力等等的较量。同学们在转本中难免会遇见一些困难,为了避免走弯路,一起来看看过来人的感悟和经验吧!…

项目范围控制:如何控制项目范围的变化?

一个成功的项目需要在进度、成本和质量之间取得平衡。控制项目交付范围是实现这个平衡的关键。然而,项目范围是会变化的,因此控制项目范围变化是必要的。 如何控制项目范围的变化? 1、了解项目的交付范围 项目经理、团队成员、利益相关者和…

verilog手撕代码3——序列检测和序列发生器

文章目录 前言一、序列检测器1.1 重复序列检测1.1.1 序列缓存对比/移位寄存器法1.1.2 状态机法 1.2 非重复序列检测 二、序列发生器2.1 移位寄存器法2.2 反馈法2.3 计数器法 前言 2023.4.25 2023.4.26 学习打卡,天气转晴 一、序列检测器 1.1 重复序列检测 1.1.1 …