当前位置: 首页 > news >正文

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 进行数据可视化的成功!

在这里插入图片描述

相关文章:

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

文章目录 1 前言2 st.line_chart:绘制线状图3 st.area_chart:绘制面积图4 st.bar_chart:绘制柱状图5 st.pyplot:绘制自定义图表6 结语 1 前言 在数据可视化的世界中,绘制清晰、易于理解的图表是非常关键的。Streamlit…...

其他行业跳槽转入计算机领域简单看法

其他行业跳槽转入计算机领域简单看法 本人选择从以下几个方向谈谈自己的想法和观点。 先看一下总体图,下面会详细分析 如何规划才能实现转码 自我评估和目标设定:首先,你需要评估自己的技能和兴趣,确定你希望在计算机领域从事…...

Unity制作一个简单的登入注册页面

1.创建Canvas组件 首先我们创建一个Canvas画布,我们再在Canvas画布底下创建一个空物体,取名为Resgister。把空物体的锚点设置为全屏撑开。 2.我们在Resgister空物体底下创建一个Image组件,改名为bg。我们也把它 的锚点设置为全屏撑开状态。接…...

常用游戏运营指标DAU、LTV及参考范围

文章目录 前言运营指标指标范围参考值留存指标的意义总结 前言 作为游戏人免不了听到 DAU 、UP值、留存 等名词,并且有些名词听起来还很像,特别是一款上线的游戏,这些游戏运营指标是衡量游戏业务绩效和用户参与度的重要数据,想做…...

标准模板库STL——deque和list

deque概述 deque属于顺序容器,称为双端队列容器 底层数据结构是动态二维数组,从整体上看,deque的内存不连续 初始数组第一维数量为2,必要时进行2倍扩容 每次第一维扩容后,原来数组第二维元素从新数组下标为OldSize/2的…...

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-BiGRU-Attention多特征分类预测,多特征输入模型&…...

C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象

第十章 类与对象 在面向对象编程中,类和对象是两个重要的概念。 类(Class)是一种用户自定义的数据类型,用于封装数据和操作。它是对象的模板或蓝图,描述了对象的属性(成员变量)和行为&#xf…...

基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

使用基于C的OpenCV库来绘制多边形&#xff0c;并且为多边形的不同边使用不同的颜色&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件&#xff1a; #include <opencv2/opencv.hpp&g…...

(六)、深度学习框架中的算子

1、深度学习框架算子的基本概念 深度学习框架中的算子&#xff08;operator&#xff09;是指用于执行各种数学运算和操作的函数或类。这些算子通常被用来构建神经网络的各个层和组件&#xff0c;实现数据的传递、转换和计算。 算子是深度学习模型的基本组成单元&#xff0c;它们…...

Redis实现共享Session

Redis实现共享Session 分布式系统中&#xff0c;sessiong共享有很多的解决方案&#xff0c;其中托管到缓存中应该是最常用的方案之一。 1、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM…...

网络通信原理UDP协议(第五十课)

UDP协议:用户数据包协议,无连接、不可靠,效率高 字段长度描述Source Port2字节标识哪个应用程序发送(发送进程)。Destination Port2字节标识哪个应用程序接收(接收进程)。Length2字节UDP首部加上UDP数据的字节数,最小为8。Checksum2字节覆盖UDP首部和UDP数据,是可…...

43、TCP报文(一)

本节内容开始&#xff0c;我们正式学习TCP协议中具体的一些原理。首先&#xff0c;最重要的内容仍然是这个协议的封装结构和首部格式&#xff0c;因为这里面牵扯到一些环环相扣的知识点&#xff0c;例如ACK、SYN等等&#xff0c;如果这些内容不能很好的理解&#xff0c;那么后续…...

【JavaScript】使用js实现滑块验证码功能与浏览器打印

滑块验证码 效果图&#xff1a; 实现思路&#xff1a; 根据滑块的最左侧点跟最右侧点&#xff0c; 是否在规定的距离内【页面最左侧为原点】&#xff0c;来判断是否通过 html代码&#xff1a; <!DOCTYPE html> <html><head><title>滑动图片验证码&…...

【使用群晖远程链接drive挂载电脑硬盘】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…...

easyx图形库基础4:贪吃蛇

贪吃蛇 一实现贪吃蛇&#xff1a;1.绘制网格&#xff1a;1.绘制蛇&#xff1a;3.控制蛇的默认移动向右&#xff1a;4.控制蛇的移动方向&#xff1a;5.生成食物6.判断蛇吃到食物并且长大。7.判断游戏结束&#xff1a;8.重置函数&#xff1a; 二整体代码&#xff1a; 一实现贪吃蛇…...

哈夫曼树(赫夫曼树、最优树)详解

目录 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 什么是哈夫曼树 构建哈夫曼树的过程 哈弗曼树中结点结构 构建哈弗曼树的算法实现 哈夫曼树&#xff08;赫夫曼树、最优树&#xff09;详解 哈夫曼树相关的几个名词 路径&#xff1a;…...

智慧建筑工地平台,通过信息化技术、物联网、人工智能技术,实现对施工全过程的实时监控、数据分析、智能管理和优化调控

智慧工地是指通过信息化技术、物联网、人工智能技术等手段&#xff0c;对建筑工地进行数字化、智能化、网络化升级&#xff0c;实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量&#xff0c;降低施工成本&#xf…...

Springboot 实践(8)springboot集成Oauth2.0授权包,对接spring security接口

此文之前&#xff0c;项目已经添加了数据库DAO服务接口、资源访问目录、以及数据访问的html页面&#xff0c;同时项目集成了spring security&#xff0c;并替换了登录授权页面&#xff1b;但是&#xff0c;系统用户存储代码之中&#xff0c;而且只注册了admin和user两个用户。在…...

OpenCV-Python中的图像处理-GrabCut算法交互式前景提取

OpenCV-Python中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…...

leetcode原题 后继者:找出二叉搜索树中指定节点的“下一个”节点

题目&#xff1a; 设计一个算法&#xff0c;找出二叉搜索树中指定节点的“下一个”节点&#xff08;也即中序后继&#xff09;。 如果指定节点没有对应的“下一个”节点&#xff0c;则返回null。 示例&#xff1a; 输入: root [2,1,3], p 1 2 / \ 1 3 输出: 2 解题思路…...

pyqt5 QlineEdit 如何设置只能输入数字

在 PyQt&#xff08;Python中的一个GUI库&#xff09;中&#xff0c;可以使用QLineEdit小部件的setValidator()方法来限制用户输入的内容。要让QLineEdit只能输入数字&#xff0c;你可以使用QIntValidator或QDoubleValidator。下面是一个示例代码&#xff0c;展示如何设置只能输…...

ubuntu中安装python

最简单方便的是 apt 使用第三方的 ppa 源&#xff0c;然后直接 apt 安装 python3.9 安装 software-properties-common 获取add-apt-repository命令&#xff1a;apt install -y software-properties-common添加第三方的 ppa 源&#xff1a;add-apt-repository ppa:deadsnakes/p…...

LeetCode150道面试经典题-- 快乐数(简单)

1.题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&am…...

科研论文配图----第一章笔记

第一章笔记 科研论文的绘制基础 科研论文配图的分类与构成 根据呈现方式&#xff0c;科研论文配图可分为线性图、灰度图、照片彩图和综合配图 4 种类型。 其中&#xff0c;线性图是主要和常用的配图类型&#xff0c;也是本书重点介绍的配图类型。 科研论文配图的格式和尺寸 格…...

OpenHarmony Meetup 广州站 OpenHarmony正当时—技术开源

招募令 OpenHarmony Meetup 广州站 火热招募中&#xff0c;等待激情四射的开发者&#xff0c;线下参与OpenHarmonyMeetup线下交流 展示前沿技术、探讨未来可能、让你了解更多专属OpenHarmony的魅力 线下参与&#xff0c;先到先得,仅限20个名额&#xff01; 报名截止时间8月23日…...

如何使用PHP Smarty模板实现静态页面生成

首先&#xff0c;你需要从Smarty官网下载这个神奇的文件。然后&#xff0c;你需要在你的PHP文件中引入Smarty类。就像这样&#xff1a; require_once(Smarty.class.php);现在&#xff0c;我们要创建一个Smarty实例。这就像打开一个新的文件&#xff0c;只不过这个文件是可以和…...

【 Cocos Creator 项目实战】益智游戏《2048》(附带完整源码工程)

本文乃Siliphen原创&#xff0c;转载请注明出处 目录 游戏介绍 概述 游戏整体流程 游戏框架设计 主要流程控制类 本文项目的代码组织结构 构建游戏世界 数字方块 地图 触摸手势识别 防触摸抖动 判断用户输入的方向 地图 任意大小的地图 初始化地图大小 地图绘制…...

剑指Offer68-II.二叉树的最近公共祖先 C++

1、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以…...

【JAVA】我们该如何规避代码中可能出现的错误?(一)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言三种类型的异常异常处理JAVA内置异常类Exception 类的层次 前言 异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;并且错误有时候是可以避免的&…...

openLayers实战(八):坐标系及其转换

坐标系介绍 EPSG: 3857 --web地图&#xff0c;基于球体的、web墨卡托投影&#xff08;伪墨卡托投影Pseudo-Mercator&#xff09;的投影坐标系&#xff0c;范围为纬度85度以下&#xff0c;由于google地图最先使用而成为事实标准。至今&#xff0c;大多互联网地图都使用EPSG3857&…...