首页 > 其他分享 >『玩转Streamlit』--页面布局

『玩转Streamlit』--页面布局

时间:2024-10-31 09:10:26浏览次数:5  
标签:-- graph 布局 data st column 玩转 Streamlit 数据

一个优秀的数据应用不仅仅是功能的强大,更在于其用户体验的打造。

而良好的页面布局,作为用户体验的重要组成部分,不仅能够提升信息的可读性,还能引导用户高效地完成操作。

反之,混乱的布局会让人感到困惑和挫败,甚至导致用户放弃使用应用。

Streamlit中,Sidebar(侧边栏)、Columns(列布局)和Tabs(标签页)是三个至关重要的布局组件,它们各自有不同的使用场景,共同构成了应用界面的骨架。

1. 侧边栏 st.sidebar

Sidebar(侧边栏)在Streamlit应用中主要是导航作用。

Sidebar通常位于应用界面的左侧或右侧,它的优势在于,既不会占用主内容区域的空间,又同时保持了对关键功能的即时访问,特别适用于那些需要频繁切换功能或具有多层导航结构的应用。

Sidebar不是菜单,一般不用于页面的切换,它的里面可以包含其他的组件。

下面构建一个简化的数据分析场景,演示Sidebar的使用方法。

我们在Sidebar中设置需要选择的数据集和数据分类(分为测试集验证集),

然后在主页面中获取选择的数据集和数据分类,只实现操作数据的功能。

# 侧边栏中选择数据集
dataset = st.sidebar.selectbox(
    "选择数据集?",
    (
        "手写数字数据",
        "房屋成交数据",
        "股市交易数据",
    ),
)

# 侧边栏中选择数据分类
data_type = st.sidebar.radio(
    "数据分类: ",
    ("测试集", "验证集", "所有数据"),
)

# 右侧页面中的模拟操作
st.title(f"数据集: {dataset}")
st.divider()
st.write(f"数据分类: 【{data_type}】")
st.write(f"TODO!!!: 操作数据的功能")

2. 列布局 st.columns

Columns布局,即列布局,是一种将页面内容分割成多个垂直排列的列,以便更有效地展示信息的布局方式。

这种布局方式不仅提升了页面的视觉吸引力,还显著增强了用户体验,使得信息获取更加直观和便捷。

Streamlit中,可以使用st.columns函数来创建列布局。

这个函数接受一个列表作为参数,列表中的每个元素都是一个函数,代表一列的内容。

Streamlit会按照列表的顺序和长度来渲染列。

比如,我们构造一个数据分析的示例,分3列展示内容,

  • 第一列模拟选择数据
  • 第二列模拟一些配置信息
  • 第三列根据配置模拟绘制图形
# 绘图的类型放在session中
if "graph" not in st.session_state:
    st.session_state.graph = ""

# 第一列
def column_1():
    st.header("1. 选择数据")
    st.selectbox(
        "选择数据集?",
        (
            "手写数字数据",
            "房屋成交数据",
            "股市交易数据",
        ),
    )
    # 随机模拟的数据
    data = pd.DataFrame(np.random.randn(5, 3), columns=["A", "B", "C"])
    st.table(data)


def column_2():
    st.header("2. 配置数据")
    graph = st.radio(
        "图形类型: ",
        ("折线图", "柱状图", "散点图"),
    )

    st.session_state.graph = graph


def column_3():
    st.header("3. 绘制图形")

    chart_data = pd.DataFrame(np.random.randn(20, 3), columns=["A", "B", "C"])
    if st.session_state.graph == "散点图":
        st.scatter_chart(chart_data)

    if st.session_state.graph == "折线图":
        st.line_chart(chart_data)

    if st.session_state.graph == "柱状图":
        st.bar_chart(chart_data)


col1, col2, col3 = st.columns(3)

with col1:
    column_1()

with col2:
    column_2()

with col3:
    column_3()

3. 标签页 st.tabs

Tabs组件的主要用途在于将复杂的信息结构分解为多个独立的、可切换的部分,每个部分(或称为“标签页”)都包含相关的内容或功能。

这种设计方式有助于减少用户在同一时间内需要处理的信息量,避免界面过载,同时也便于用户快速找到所需内容。

同样是上面的例子,如果数据的字段很多,配置数据的项目也很多,那么上面的Columns布局就显得很拥挤,

这时,用Tabs布局更好,代码调整很简单。

tab1, tab2, tab3 = st.tabs(["1. 选择数据", "2. 配置数据", "3. 绘制图形"])

with tab1:
    tab_1()

with tab2:
    tab_2()

with tab3:
    tab_3()

上面函数tab_1()tab_2()tab_3()中的代码和Columns布局示例中的column_1()column_2()column_3()代码基本一样。

随着Columns布局的每个Columns内容逐渐增多时,可以考虑改用Tabs布局。

4. 总结

总之,这三种布局方式各有千秋,选择哪种布局取决于应用的具体需求、用户习惯以及设计目标。

Sidebar(侧边栏)提供持续可见的导航菜单,适合功能繁多或需频繁切换的应用,帮助用户快速定位所需功能,同时保持主内容区域的清晰。

Columns(列布局)则通过分割界面为多个并列区域,实现图文混排或数据报表的灵活展示。

它提高了信息密度,使得用户能够在同一视图中获取更多信息,适用于需要同时展示多种数据类型或视图的场景。

Tabs(标签页)将内容划分为多个独立的、可切换的部分,每个部分包含相关功能或信息。

它有助于节省屏幕空间,同时帮助用户对信息进行逻辑分组,提高信息检索效率。

Tabs适用于功能或信息分类明确,且用户可能需要根据不同需求切换查看的应用。

标签:--,graph,布局,data,st,column,玩转,Streamlit,数据
From: https://www.cnblogs.com/wang_yb/p/18516928

相关文章

  • Mybatis plus 数据库时间对的,取出来后,时间少了8小时
    Mybatisplus数据库时间对的,取出来后,时间少了8小时,数据连接的时区也是对的数据库是对的代码取出来是对的接口返回的JSON不对出现这种情况在@JsonFormat加上时区/***创建时间*/@Schema(description="创建时间")@JsonFormat(pattern="yy......
  • Python 进度条模块tqdm
    1.简介在处理大规模数据或长时间运行的任务时,了解任务的进度对于用户体验和调试来说非常重要。tqdm是一个用于显示进度条的Python库,它能将任务的进度信息直观地展示出来。无论是遍历一个大型列表、处理批量数据,还是下载文件,tqdm都能轻松实现进度条显示,并且与Python的标准......
  • 项目进度计划中的任务如何优先排序
    项目进度计划中的任务优先排序取决于多个因素:任务的紧迫性、依赖关系、资源可用性、项目关键路径以及潜在风险。通常,在确定任务优先级时,应首先考虑关键路径上的任务,因为这些任务直接影响项目完成的总时长。接着,考虑那些有着严格截止日期或是对项目成败至关重要的任务。资源的分配......
  • 访问网站404页面时出现301报错
    主机上设置了404错误页面,但在访问网页时,却出现了301报错。这是因为主机域名开启了强制HTTPS加密访问功能,导致服务器在处理HTTP请求时,先返回301状态码并自动跳转到HTTPS请求,然后再去请求404错误页面资源,从而导致301报错。可能原因强制HTTPS加密访问功能:当您对网站服务器发出一个......
  • 重置数据库密码后导致网站无法访问
    解决方案步骤下载网站程序使用FTP客户端将网站程序从云虚拟主机下载到本地主机。例如,将网站程序保存在本地主机目录 E:\www。打开命令行窗口同时按 Win 键和 R 键,打开“运行”对话框。在“打开(O)”文本框中输入 cmd,然后单击“确定”。进入网站程序目录......
  • 如何修改网站的 SEO,优化网站搜索引擎排名的方法
    关键词研究:使用工具(如GoogleKeywordPlanner)进行关键词研究,找出与你的业务相关的高流量关键词。优化标题和描述:确保每个页面的 <title> 标签和 <metadescription> 标签都包含主要关键词,并且具有吸引力。高质量内容:定期发布高质量、有价值的内容,吸引用户和搜索引擎的注意......
  • Dedecms数据库恢复与备份的两种方法
    使用phpMyAdmin进行备份和恢复备份步骤:登录主机控制面板。点击“数据库管理”->“登录phpMyAdmin”。使用数据库用户名和密码登录。找到要备份的数据库,全选数据表。点击“导出”,选择导出格式(如SQL),点击“执行”。恢复步骤:登录phpMyAdmin。选择要导入的数据库。......
  • 给DedeCMS增加二维码功能
    问题:如何给DedeCMS增加二维码功能?解决方法:修改 extend.func.php 文件:打开 include/extend.func.php 文件,在文件末尾添加以下内容:functionqr_code($id,$size=200){return'https://api.qrserver.com/v1/create-qr-code/?size='.$size.'x'.$size.'&data=&......
  • 织梦网站转移主机服务器教程
    问题:如何将织梦网站从一个主机或服务器迁移到另一个主机或服务器。解决方法:备份数据库:进入织梦后台,选择“系统”>“数据库备份/还原”>全选所有数据表,点击提交进行备份。备份文件会生成在网站根目录下的 databackupdata 文件夹中。下载所有文件:将原空间上的......
  • dedecms模板怎么修改
    问题:如何修改DedeCMS模板。解决方法:进入后台管理:登录DedeCMS后台管理界面。选择模板管理:在后台左侧菜单中选择“模板管理”。选择要修改的模板:在模板列表中找到需要修改的模板文件,点击“修改”按钮。编辑模板文件:在模板编辑页面中,可以直接修改HTML和CS......