Streamlit 讲解专栏(十):数据可视化-图表绘制详解(上)

文章目录

  • 1 前言
  • 2 st.line_chart:绘制线状图
  • 3 st.area_chart:绘制面积图
  • 4 st.bar_chart:绘制柱状图
  • 5 st.pyplot:绘制自定义图表
  • 6 结语

在这里插入图片描述

1 前言

在数据可视化的世界中,绘制清晰、易于理解的图表是非常关键的。Streamlit 是一个流行的 Python 库,它提供了简单的界面和强大的功能,帮助用户轻松创建交互式应用程序和数据可视化。而其中的 Chart elements(图表元素)部分则为我们提供了多种图表类型来展示数据。

本文将深入介绍 Streamlit 中的几个重要图表元素:st.line_chart、st.area_chart、st.bar_chart 和 st.pyplot。通过使用这些元素,您可以以极简的代码绘制出各种各样的图表,使您的数据更加生动和易于理解。

在接下来的部分中,我们将会深入介绍每个图表元素的用途和示例代码,并探索如何在 Streamlit 应用程序中利用这些图表元素呈现数据。无论您是一名数据科学家、数据工程师还是对数据可视化感兴趣的爱好者,本文都将提供给您有用的信息和实践经验。

让我们一起开始探索 Streamlit 中的这些强大的图表元素吧!

2 st.line_chart:绘制线状图

在数据可视化中,线状图是一种常见的图表类型,用于展示随时间或其他连续变量变化的趋势。Streamlit 中的 st.line_chart 方法可以帮助我们以最简单的方式绘制出线状图,使数据的趋势更加直观和易于理解。

让我们通过一个示例来演示如何使用 st.line_chart 绘制线状图。首先,我们需要引入 Streamlit、Pandas 和 NumPy 库,并准备一些示例数据:

import streamlit as st
import pandas as pd
import numpy as npchart_data = pd.DataFrame(np.random.randn(20, 3),columns=['a', 'b', 'c'])

在上述代码中,我们创建了一个包含 20 行和 3 列的 DataFrame,其中的数据是使用 NumPy 生成的随机数。每一列将对应线状图上的一条线。

接下来,我们可以使用 st.line_chart 方法来绘制线状图,代码如下所示:

st.line_chart(chart_data)

在这里插入图片描述

通过运行上述代码,将会在 Streamlit 应用程序中展示一个线状图,它显示了随机数据的趋势。

使用 st.line_chart 方法非常简单。仅需将需要绘制的数据传递给该方法,并在 Streamlit 应用程序中即可得到相应的线状图。Streamlit 会自动根据数据的变化绘制出完整的线图,并提供一些交互功能,如缩放和悬停。

这是一个非常基本的示例,您可以灵活运用 st.line_chart 方法来绘制自己的数据集。您可以将其应用于时间序列数据、股票走势、运动轨迹等各种场景。

3 st.area_chart:绘制面积图

在数据可视化中,面积图是一种常用的图表类型,用于展示数据随时间或其他连续变量变化的趋势,并同时显示出不同数据系列之间的相对大小关系。Streamlit 中的 st.area_chart 方法为我们提供了一个简单的方式来绘制面积图,以更加直观和易于理解地展示数据。

接下来,让我们通过一个示例来演示如何使用 st.area_chart 绘制面积图。同样,我们需要引入 Streamlit、Pandas 和 NumPy 库,并准备一些示例数据:

import streamlit as st
import pandas as pd
import numpy as npchart_data = pd.DataFrame(np.random.randn(20, 3),columns=['a', 'b', 'c'])

在上述代码中,我们创建了一个包含 20 行和 3 列的 DataFrame,其中的数据是使用 NumPy 生成的随机数。每一列都将对应面积图上的一块面积。

接下来,我们可以使用 st.area_chart 方法来绘制面积图,代码如下所示:

st.area_chart(chart_data)

在这里插入图片描述

通过运行上述代码,将会在 Streamlit 应用程序中展示一个面积图,它显示了随机数据的趋势,并使用不同颜色的填充面积来表示不同的数据系列。

和 st.line_chart 方法类似,使用 st.area_chart 方法同样是非常简单的。您只需将需要绘制的数据传递给该方法,Streamlit 将会自动根据数据的变化绘制出完整的面积图。

通过面积图,您可以更直观地观察数据的变化趋势,并比较不同数据系列之间的相对大小。这对于展示股票走势、销售趋势、温度变化等数据非常有用。

4 st.bar_chart:绘制柱状图

柱状图(Bar Chart)是一种常见的数据可视化图表,用于展示不同类别或数据组的数量或数值之间的比较。在 Streamlit 中,我们可以使用 st.bar_chart 方法来绘制出具有直观效果的柱状图,以更好地呈现和分析我们的数据。

现在,让我们通过一个示例来演示如何使用 st.bar_chart 方法来绘制柱状图。同样,我们需要引入 Streamlit、Pandas 和 NumPy 库,并准备一些示例数据:

import streamlit as st
import pandas as pd
import numpy as npchart_data = pd.DataFrame(np.random.randn(20, 3),columns=["a", "b", "c"])

在上述代码中,我们创建了一个包含 20 行和 3 列的 DataFrame,其中每一列都代表一个柱状图上的柱子。

接下来,我们可以使用 st.bar_chart 方法来绘制柱状图,代码如下所示:

st.bar_chart(chart_data)

通过运行上述代码,将在 Streamlit 应用程序中展示一个柱状图,它显示了随机数据的不同类别或数据组之间的比较。每根柱子的高度表示该类别或数据组的数量或数值。

使用 st.bar_chart 方法非常简单。只需将需要绘制的数据传递给该方法,并在 Streamlit 应用程序中即可得到相应的柱状图。Streamlit 会自动根据数据的变化绘制完整的柱状图,并提供一些交互功能,如悬停和点击。

柱状图通常用于展示分类数据、对比数据、分析趋势等。通过柱状图,我们可以更直观地掌握数据之间的差异和关系。

5 st.pyplot:绘制自定义图表

有时,我们可能需要绘制一些特定类型的自定义图表,以更好地满足数据可视化的需求。在 Streamlit 中,我们可以使用 st.pyplot 方法来绘制自定义图表,如 Matplotlib 所提供的各种图表类型。

让我们通过一个示例来演示如何使用 st.pyplot 方法绘制自定义图表。为了使用 Matplotlib 绘制图表,我们需要引入 Streamlit、Matplotlib 和 NumPy 库,并准备一些示例数据:

import streamlit as st
import matplotlib.pyplot as plt
import numpy as nparr = np.random.normal(1, 1, size=100)
fig, ax = plt.subplots()
ax.hist(arr, bins=20)

在上述代码中,我们使用 NumPy 生成了一组随机正态分布的样本数据 arr。然后,我们使用 Matplotlib 绘制了一个直方图,设置了 20 个柱子作为分割区间。

接下来,我们可以使用 st.pyplot 方法来展示我们绘制的自定义图表,代码如下所示:

st.pyplot(fig)

在这里插入图片描述

通过运行上述代码,将在 Streamlit 应用程序中展示一个自定义图表,它显示了随机正态分布样本数据的直方图。我们可以根据需要进行定制和调整,以满足特定的需求。

需要注意的是,随着 Streamlit 的更新,自 2020年12月1日 开始,我们将不再支持在 st.pyplot 方法中不传入参数的用法,因为这会使用 Matplotlib 的全局图形对象,这种用法不是线程安全的。所以,请始终按照上述示例中的方式传递图形对象。

另外,Matplotlib 支持多种后端(backend)类型。如果在使用 Matplotlib 与 Streamlit 时遇到错误,请尝试将后端设置为 “TkAgg”。

通过 st.pyplot 方法,我们可以方便地在 Streamlit 应用程序中展示各种自定义图表,以满足不同数据可视化的需求。

6 结语

在本篇博文中,我们介绍了 Streamlit 库中常用的几个数据可视化方法,包括绘制线状图、面积图、柱状图和自定义图表。

通过 st.line_chart 方法,我们可以将数据可视化为线状图,直观地展示数据的趋势和变化。

使用 st.area_chart 方法,我们可以创建面积图,更好地呈现数据在不同类别或时间段之间的分布情况。

st.bar_chart 方法可用于绘制柱状图,以清晰地比较不同类别或数据组之间的差异。

对于一些特定需求或复杂的图表类型,我们可以使用 st.pyplot 方法,将 Matplotlib 绘制的自定义图表展示在 Streamlit 应用程序中。

通过这些数据可视化方法,我们可以更好地理解和传达数据,从而支持更准确的分析和决策。

在下一篇博文中,我们将介绍其他一些常用的数据可视化方法,敬请期待!

希望本文为您提供了有价值的信息。如有任何疑问或需要进一步了解,请随时提问。祝您使用 Streamlit 进行数据可视化的成功!

在这里插入图片描述

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

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

相关文章

前端如何安全的渲染HTML字符串?

在现代的Web 应用中,动态生成和渲染 HTML 字符串是很常见的需求。然而,不正确地渲染HTML字符串可能会导致安全漏洞,例如跨站脚本攻击(XSS)。为了确保应用的安全性,我们需要采取一些措施来在安全的环境下渲染…

【山河送书第七期】:《强化学习:原理与Python实战》揭秘大模型核心技术RLHF!

《强化学习:原理与Python实战》揭秘大模型核心技术RLHF! 一图书简介二RLHF是什么?三RLHF适用于哪些任务?四RLHF和其他构造奖励模型的方法相比有何优劣?五什么样的人类反馈才是好反馈?六如何减小人类反馈带来…

什么是异常处理

文章目录 异常处理介绍自定义异常页面文档:自定义异常页面说明 自定义异常页面-应用实例需求:代码实现 全局异常说明全局异常-应用实例需求:代码实现完成测试 自定义异常说明自定义异常-应用实例需求:代码实现完成测试 注意事项完成测试 异常处理 介绍 默认情况下…

使用 NLP 进行文本摘要

一、说明 文本摘要是为较长的文本文档生成简短、流畅且最重要的是准确摘要的过程。自动文本摘要背后的主要思想是能够从整个集合中找到最重要信息的一小部分,并以人类可读的格式呈现。随着在线文本数据的增长,自动文本摘要方法可能会非常有用&#xff0c…

mysql 数据备份和恢复

操作系统:22.04.1-Ubuntu mysql 版本:8.033 binlog 介绍 binlog 是mysql 二进制日志 binary log的简称,可以简单理解为数据的修改记录。 需要开启binlog,才会产生文件,mysql 8.0 默认开启,开启后可以在 /var/lib/mysql &#xff…

AJ-Captcha行为验证在vue中的使用

项目场景: 提示:这里简述项目相关背景: 项目场景:由原先的验证码校验升级为行为验证校验 使用方法 提示:参考文档: 参考文档:vue使用AJ-Captcha文档 gitee地址:AJ-Captcha &…

什么是微服务?

2.微服务的优缺点 优点 单一职责原则每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;开发简单,开发效率提高,一个服务可能就是专一的只干一件事;微服务能够被小…

26、springboot的自动配置03--核心功能--自定义条件注解及使用

开发自己的自动配置------开发自己的条件注解 ★ 自定义条件注解 好处有两个: 1. 真正掌握Spring boot条件注解的本质。 2. 项目遇到一些特殊的需求时,也可以开发自己的自定义条件注解来解决问题。自定义条件注解: ▲ 所有自定义注解其实都…

ICT产教融合创新实训基地软件测试实训室建设方案

一 、系统概述 ICT产教融合创新,简单来说,就是信息与通信技术(ICT)与产业界、教育界的融合创新。这个概念强调了在现代社会中,信息技术与产业发展以及教育培训之间相互关联的重要性。 ICT产教融合创新的核心思想包括以…

lambda表达式

一,什么是lambda表达式 1.1 函数式接口 要想了解什么是lambda表达式,就必须得知道什么是函数式接口,函数式接口是指只包含一个抽象方法的接口。如果我们自己写一个函数时接口,最好在接口前添加Functionallnterface,和…

程序员如何利用公网远程访问查询本地硬盘【内网穿透】

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 公网远程访问本地硬盘文件【内网穿透】 文章目录 公网远程访问本地硬盘文件【内网穿透】前言1. 下载cpolar和Everything软件1.…

去掉鼠标系列之一: 语雀快捷键使用指南

其实应该是系列之二了,因为前面写了一个关于Interlij IDEA的快捷键了。 为什么要写这个了,主要是觉得一会儿用鼠标,一会儿键盘,一点儿不酷,我希望可以一直用键盘,抛开鼠标。后面陆续记录一下各个软件的快捷…

Lnton羚通算法算力云平台在环境配置时 OpenCV 无法显示图像是什么原因?

问题&#xff1a; cv2.imshow 显示图像时报错&#xff0c;无法显示图像 0%| | 0/1 [00:00<…

【数据结构】栈和队列

大家好&#xff01;今天我们来学习数据结构中的栈和队列。 目录 1. 栈 1.1 栈的概念及结构 1.2 栈的定义 1.3 栈的接口实现 1.3.1 初始化栈 1.3.2 入栈 1.3.3 出栈 1.3.4 获取栈顶元素 1.3.5 获取栈中有效元素个数 1.3.6 检测栈是否为空 1.3.7 销毁栈 1.4 栈的完整…

堆 和 优先级队列(超详细讲解,就怕你学不会)

优先级队列 一、堆的概念特性二、堆的创建1、向下调整算法2、向下调整建堆3、向下调整建堆的时间复杂度 三、堆的插入1、向上调整算法实现插入2、插入创建堆的时间复杂度 三、堆的删除四、Java集合中的优先级队列1、PriorityQueue 接口概述及模拟实现2、如何创建大根堆&#xf…

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,containsKey)五(117)

需求&#xff1a;前端根据后端的返回数据&#xff1a;画统计图&#xff1b; 1.动态获取地域数据以及数据中的平均值&#xff0c;按照平均值降序排序&#xff1b; 说明&#xff1a; X轴是动态的&#xff0c;有对应区域数据则展示&#xff1b; X轴 区域数据降序排序&#xff1b;…

Intelij IDEA 配置Tomcat解决Application Server不显示的问题

今天搭建war工程时部署项目发现&#xff0c;IDEA的控制台没有Application Servers&#xff0c;在网上查了一下&#xff0c;总结几个比较好的解决方法&#xff0c;为了方便自己和其他人以后碰到相同的问题&#xff0c;不再浪费时间再次寻找解决办法。 Intelij IDEA 配置Tomcat时…

【Spring专题】Spring之Bean的生命周期源码解析——阶段二(二)(IOC之属性填充/依赖注入)

目录 前言阅读准备阅读指引阅读建议 课程内容一、依赖注入方式&#xff08;前置知识&#xff09;1.1 手动注入1.2 自动注入1.2.1 XML的autowire自动注入1.2.1.1 byType&#xff1a;按照类型进行注入1.2.1.2 byName&#xff1a;按照名称进行注入1.2.1.3 constructor&#xff1a;…

uniapp小程序实现上传图片功能,并显示上传进度

效果图&#xff1a; 实现方法&#xff1a; 一、通过uni.chooseMedia(OBJECT)方法&#xff0c;拍摄或从手机相册中选择图片或视频。 官方文档链接: https://uniapp.dcloud.net.cn/api/media/video.html#choosemedia uni.chooseMedia({count: 9,mediaType: [image,video],so…

【Django】无法从“django.utils.encoding”导入名称“force_text”

整晚处理 Django 的导入错误。 我将把它作为提醒&#xff0c;希望处于相同情况的人数会减少。 原因 某些软件包版本不支持Django 4 请看下表并决定Django和Python的版本 方案 如果出现难以响应&#xff0c;或者更改环境麻烦&#xff0c;请尝试以下操作 例如出现以下错误 …