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.mzph.cn/news/51526.shtml

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

相关文章

HCIP-OpenStack组件之neutron

neutron(ovs、ovn) OVS OVS(Open vSwitch)是虚拟交换机,遵循SDN(Software Defined Network,软件定义网络)架构来管理的。 OVS介绍参考:https://mp.weixin.qq.com/s?__bizMzAwMDQyOTcwOA&mid2247485088&idx1…

R语言06-R语言的基本运算

概念 R语言支持多种基本运算&#xff0c;包括算术运算、逻辑运算、比较运算和向量化运算等。 代码示意 逻辑运算 a <- TRUE b <- FALSElogical_and <- a & b # 逻辑与 logical_or <- a | b # 逻辑或 logical_not <- !a # 逻辑非比较运算 x <…

【WebSocket】前端使用WebSocket实时通信

目录 前言什么是WebSocketWebSocket的工作原理WebSocket与HTTP的关系HTTP建立持久化连接WebSocket类封装 前言 最近写项目&#xff0c;需要实现消息通知和实时聊天的功能&#xff0c;就去了解了一些关于websocket的知识&#xff0c;总结如下。 什么是WebSocket WebSocket 是一…

开源ChatGPT系统源码 采用NUXT3+Laravel9后端开发 前后端分离版本

开源ChatGPT系统源码 采用NUXT3Laravel9后端开发 前后端分离版本 ChatGPT是一种基于AI的聊天机器人技术&#xff0c;它可以帮助用户与聊天机器人进行自然语言交流&#xff0c;以解决用户的问题或满足用户的需求。ChatGPT的核心技术是使用自然语言处理&#xff08;NLP&#xff…

什么是Flex布局?请列举一些Flex布局的常用属性。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Flex布局&#xff08;Flexible Box Layout&#xff09;⭐ Flex布局的常用属性⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之…

openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读

打印一个图片可以做出一个函数&#xff1a; def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 1、轮廓特征与近似 1.1 轮廓特征 前面我们计算了这个图片的轮廓&#xff1a; 它的轮廓信息保存在了contours中&#xff0c;取出第一个轮廓&…

深入理解与实现:哈希算法的Java示例

深入理解与实现&#xff1a;哈希算法的Java示例 哈希算法是计算机科学中的关键概念&#xff0c;用于将输入数据映射到固定长度的哈希值。在本文中&#xff0c;我们将深入介绍哈希算法的原理&#xff0c;讨论常见的哈希函数和哈希表&#xff0c;并提供详细的Java代码示例。 1.…

软考高级系统架构设计师系列论文八十七:论企业应用集成

软考高级系统架构设计师系列论文八十七:论企业应用集成 一、企业应用集成相关知识点二、摘要三、正文四、总结一、企业应用集成相关知识点 软考高级系统架构设计师系列之:企业集成平台技术的应用和架构设计二、摘要 本文讨论了某公司的应用系统集成项目。某公司为了应对市场变…

vue element-ui 菜单管理使用图标选择器组件

目录 &#x1f31f;前言&#x1f31f;安装&#x1f31f;main.js配置&#x1f31f;页面使用&#x1f31f;效果展示 &#x1f31f;前言 哈喽小伙伴们&#xff0c;本文为大家介绍一下 VueElementUI 中图标选择器组件的使用方法&#xff1b;一起来看下吧。 &#x1f31f;安装 np…

一个程序员的工作日记--每天就干两件事,一年后让别人刮目相看

文章目录 成功源于专注一、早上布局二、晚上复盘三、技术细节四、专注与成功五、专注的重要性六、忙碌和赚钱七、结论以嵌入式开发为例&#xff1a;一、早上布局二、晚上复盘三、技术细节四、专注与成功五、忙碌和赚钱六、结论在嵌入式软件开发中&#xff0c;我们需要按照以下步…

设计模式 -- 策略模式(传统面向对象与JavaScript 的对比实现)

设计模式 – 策略模式&#xff08;传统面向对象与JavaScript 的对比实现&#xff09; 文章目录 设计模式 -- 策略模式&#xff08;传统面向对象与JavaScript 的对比实现&#xff09;使用策略模式计算年终奖初级实现缺点 使用组合函数重构代码缺点 使用策略模式重构代码传统的面…

Kubernetes(K8S)使用PV和PVC做存储安装mysql

Kubernetes使用PV和PVC做存储安装mysql 环境准备什么是PV和PVC环境准备配置nfs安装nfs配置nfs服务端 创建命名空间配置pv和pvcpv的yaml文件pvc的yaml文件 部署mysql创建mysql的root密码的secret创建mysql部署的yaml部署mysql链接mysql外部链接内部链接 环境准备 首先你需要一个…

redux中间件理解,常见的中间件,实现原理。

文章目录 一、Redux中间件介绍1、什么是Redux中间件2、使用redux中间件 一、Redux中间件介绍 1、什么是Redux中间件 redux 提供了类似后端 Express 的中间件概念&#xff0c;本质的目的是提供第三方插件的模式&#xff0c;自定义拦截 action -> reducer 的过程。变为 actio…

Python 爬虫网页图片下载到本地

您可以使用Python的requests库来获取网页的源码&#xff0c;使用BeautifulSoup库来解析HTML&#xff0c;并使用urllib库来下载图片到本地。下面是一个示例代码&#xff1a; import requests from bs4 import BeautifulSoup import urllib # 获取网页源码 url https://examp…

前端面试:【前端工程化】构建工具Webpack、Parcel和Rollup

嗨&#xff0c;亲爱的前端开发者&#xff01;在现代Web开发中&#xff0c;前端工程化变得愈发重要。构建工具如Webpack、Parcel和Rollup帮助我们自动化任务、管理依赖、优化性能等。本文将深入探讨这三个前端构建工具&#xff0c;帮助你了解它们的优点和用途。 1. Webpack&…

【JavaEE基础学习打卡06】JDBC之进阶学习PreparedStatement

目录 前言一、PreparedStatement是什么二、重点理解预编译三、PreparedStatement基本使用四、Statement和PreparedStatement比较1.PreparedStatement效率高2.PreparedStatement无需拼接参数3.PreparedStatement防止SQL注入 总结 前言 &#x1f4dc; 本系列教程适用于JavaWeb初学…

SpringMVC探秘: 实现MVC模式的Web应用

文章目录 1. SpringMVC概述1.1. 什么是SpringMVC&#xff1f;1.1.1. MVC与SpringMVC 1.2. SpringMVC项目的优势 2. SpringMVC项目的创建与使用2.1. 创建SpringMVC项目2.2. 设置路由2.3. 获取参数2.3.1. 获取一个参数2.3.2. 获取多个参数2.3.3. 获取日期参数2.3.4. 参数重命名Re…

通过SSH协议连接远程服务器(Linux)

能够连接远程服务器的软件有很多&#xff0c;例如MobaXterm、Xshell、PuTTY、SecureCRT等。 以下是在Windows系统上通过SSH协议来连接Linux系统的操作过程&#xff1a; 在Linux系统上打开终端&#xff0c;输入ifconfig命令查看主机名&#xff1b;如果无法执行该命令&#xff…

mac地址、ip地址、子网掩码、端口

1. mac地址 又称为网络适配器或者网络接口卡NIC&#xff0c;但是现在更多人原因使用更简单的名称"网卡"&#xff0c;通过网卡能够是不同的计算机之间相互连接&#xff0c;从而完成数据通信的功能 每一个网卡在出厂的时候 都会给分配到一个编号&#xff0c;类似与身份…

【算法】字符匹配算法详解与代码实现

在计算机科学中&#xff0c;字符匹配算法是一种在给定文本中查找特定模式的技术。这些算法在各种应用中都发挥着重要作用&#xff0c;包括文本编辑器、搜索引擎、网络安全和生物信息学等。本文将详细介绍两种常用的字符匹配算法&#xff1a;朴素方法和KMP算法。我们还将提供Pyt…