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

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南

数据科学和工程实践中,NumPyMatplotlib 是强大的组合工具。本文将进一步展示如何借助这两个库进行更复杂的可视化任务,例如创建多曲线、叠加图、动态可视化等场景。


一、环境准备

确保你已经安装 NumPyMatplotlib

pip install numpy matplotlib

引入必要库:

import numpy as np
import matplotlib.pyplot as plt

二、NumPy 高级数据生成

以下示例生成多组数据,以便展示复杂的图表绘制。

# 创建时间序列数据
time = np.linspace(0, 20, 200)# 多种波形生成
sin_wave = np.sin(time)
cos_wave = np.cos(time)
sin2_wave = np.sin(time + np.pi / 4)  # 相位偏移的正弦波
noise = 0.3 * np.random.randn(200)    # 添加噪声# 混合信号数据
mixed_signal = sin_wave + noise

这些数据将用于展示多种可视化技术。


三、叠加多条曲线

在工程和科研中,经常需要将多条曲线叠加在一起进行比较。

plt.figure(figsize=(10, 6))# 绘制多条曲线
plt.plot(time, sin_wave, label='Sine Wave', linestyle='-', color='b')
plt.plot(time, cos_wave, label='Cosine Wave', linestyle='--', color='r')
plt.plot(time, sin2_wave, label='Phase Shifted Sine', linestyle='-.', color='g')# 添加图例、标题和坐标轴标签
plt.title('Multiple Waveforms')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend(loc='upper right')# 展示图表
plt.show()

在这里插入图片描述

效果:

这个图表将正弦、余弦以及相位偏移的正弦波叠加在一起,帮助分析它们的相位和幅度关系。


四、动态变化的折线图

有时我们需要动态观察数据的变化,下面的示例展示了如何用 FuncAnimation 实现动态折线图。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation# 生成数据:时间序列和正弦波
time = np.linspace(0, 20, 200)
sin_wave = np.sin(time)# 创建图表和轴
fig, ax = plt.subplots()
ax.set_xlim(0, 20)  # X轴范围
ax.set_ylim(-1.5, 1.5)  # Y轴范围
line, = ax.plot([], [], lw=2, color='b')  # 初始空折线# 初始化函数:将折线置为空白
def init():line.set_data([], [])return line,# 动态更新函数:逐帧更新折线的数据
def update(frame):x = time[:frame]  # 每帧展示一部分时间序列数据y = sin_wave[:frame]  # 每帧展示对应的正弦波数据line.set_data(x, y)return line,# 创建动画,frames 控制动画的总帧数,interval 设置每帧间隔时间(毫秒)
ani = FuncAnimation(fig, update, frames=len(time), init_func=init, blit=True, interval=50)# 展示动画
plt.show()

在这里插入图片描述

效果:

该动画演示了正弦波随着时间的动态绘制过程。


五、双 Y 轴图表

在某些场景下,我们需要在同一个图表上显示两种不同量纲的数据。

fig, ax1 = plt.subplots()# 绘制第一个 Y 轴上的数据
ax1.set_xlabel('Time (s)')
ax1.set_ylabel('Sine Wave', color='b')
ax1.plot(time, sin_wave, color='b')
ax1.tick_params(axis='y', labelcolor='b')# 创建共享 X 轴的第二个 Y 轴
ax2 = ax1.twinx()
ax2.set_ylabel('Mixed Signal', color='r')
ax2.plot(time, mixed_signal, color='r')
ax2.tick_params(axis='y', labelcolor='r')# 展示图表
fig.tight_layout()
plt.show()

在这里插入图片描述

效果:

这幅图展示了正弦波和混合信号,分别对应于左右两个 Y 轴,使得不同数据量的趋势更直观。


六、热力图(Heatmap)

热力图可以有效地展示二维数据的密集分布。

# 生成二维随机数据
data = np.random.rand(10, 10)# 绘制热力图
plt.imshow(data, cmap='viridis', interpolation='nearest')
plt.colorbar()  # 添加颜色条plt.title('Heatmap Example')
plt.show()

在这里插入图片描述

效果:

热力图可以用于分析二维数据的密集度,如矩阵值或图像处理中的像素值。


七、3D 数据可视化

Matplotlib 还支持 3D 可视化,这对于科学计算和复杂数据展示非常有用。

from mpl_toolkits.mplot3d import Axes3D# 创建网格数据
X = np.linspace(-5, 5, 50)
Y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))# 创建 3D 图表
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')# 绘制 3D 曲面
ax.plot_surface(X, Y, Z, cmap='viridis')# 添加标题
ax.set_title('3D Surface Plot')
plt.show()

在这里插入图片描述

效果:

3D 曲面图展示了二维函数的空间分布,可用于展示地形数据、数学函数等。


八、结论

本文介绍了使用 NumPyMatplotlib 进行更复杂的数据可视化方法,包括多曲线叠加、动态折线图、双 Y 轴图表、热力图和 3D 可视化。这些技巧可以帮助你更全面地展示数据,并揭示数据背后的复杂关系。

希望这篇博客能帮助你更好地掌握 NumPy 和 Matplotlib 的高级用法!

相关文章:

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南

使用 NumPy 和 Matplotlib 进行高级数据可视化:实践指南 数据科学和工程实践中,NumPy 和 Matplotlib 是强大的组合工具。本文将进一步展示如何借助这两个库进行更复杂的可视化任务,例如创建多曲线、叠加图、动态可视化等场景。 一、环境准备…...

mysql 启动报错 ‘/var/run/mysqld/mysqld.sock‘

问题描述: Docker 拉取 Ubuntu镜像,启动ubuntu容器后 在里边安装mysql 当容器启动时,不将/var/lib/mysql 目录映射到宿主机时,mysql可以正常启动使用当容器启动时,将/var/lib/mysql 目录映射到宿主机后,my…...

JAVA基础:常用类 (习题笔记)

1,验证键盘输入的用户名不能为空,长度大于6,不能有数字。 提示:使用字符串String类的相关方法完成 package packagingClass;import java.util.Scanner;public class Exercises1 {//程序入口public static void main(String[] arg…...

element 按钮变形 el-button样式异常

什么都没动,element UI的按钮变形了,莫名其妙,连官网的也变形了,换了其它浏览器又正常, 难道这是element UI的问题?NO,是浏览器的插件影响到了!去扩展插件里面一个个关闭扩展&#x…...

Windows/Linux(服务器)查看显卡的名称

文章目录 1. 使用 nvidia-smi(适用于 NVIDIA 显卡)2. 使用 wmic 命令(Windows) 1. 使用 nvidia-smi(适用于 NVIDIA 显卡) 如果服务器上安装了 NVIDIA 驱动程序,可以使用 nvidia-smi 工具来查看…...

算法基础 - 时间复杂度和空间复杂度(万字长文详解)

文章目录 前言什么是算法效率时间复杂度定义作用类比理解 空间复杂度定义作用类比理解 大O表示法为什么需要?定义计算步骤1. 计算基本操作的执行次数 T(n)2. 确定 T(n) 的数量级(按规则)3. 使用大O表示法表示时间复杂度 常见复杂度O(1)说明案…...

【K8S系列】Kubernetes 中 Service IP 地址和端口不匹配问题及解决方案【已解决】

在 Kubernetes 中,Service 是实现 Pod 之间和 Pod 与外部之间通信的关键组件。Service 的 IP 地址和端口配置不当可能导致应用无法正常访问。本文将详细分析 Service IP 地址和端口不匹配的问题,常见原因及其解决方案。 一、问题描述 Service IP 地址和…...

10. 异常处理器

一、通过 注解 注册异常处理器 <?php namespace App\Exception\Handler;use App\Exception\FooException; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Swow\Psr7\Message\ResponsePlusInterface; use Throwable;use…...

python查询并安装项目所依赖的所有包

引言 如果需要进行代码的移植&#xff0c;肯定少不了在另一台pc或者服务器上进行环境的搭建&#xff0c;那么首先是要知道在已有的工程的代码中用到了哪些包&#xff0c;此时&#xff0c;如果是用人工去一个一个的代码文件中去查看调用了哪些包&#xff0c;这个工作甚是繁琐。…...

istio多主集群架构验证方法

istio单网格多集群架构搭建完成后&#xff0c;需要验证下当前集群是否可以发现对端集群&#xff0c;验证方法如下&#xff1a; 命名空间建议设置为&#xff1a;demo-dubbo deploy.yaml apiVersion: apps/v1 kind: Deployment metadata:finalizers:- kubebuilder.io/net.traf…...

Java全栈经典面试题剖析8】JavaSE高级 -- 线程同步、 线程通信、死锁、线程池

目录 面试题3.44 多线程的同步方式 面试题3.45 多线程安全问题怎么解决 面试题3.46 当一个线程进入一个对象的一个synchronized方法后&#xff0c;其它线程是否可进入此对象的其它方法? 面试题3.47 简述synchronized与java.util.concurrent.locks.Lock的异同&#xff…...

linux 驱动, struct file , struct node, private_data

首先是关于什么是 praviate_data : 来看看正点原子是怎么使用的。 网上找的一些资料&#xff1a; 总结一下&#xff1a; 1 私有数据 是 struct file特有的。 &#xff12;private_data 可以自己随便设置。 3 一般是在 open 函数中设置好&#xff0c;然后在 read, write 函…...

ubuntu 硬盘扩容

在 Linux 中&#xff0c;可以使用以下命令查看磁盘的使用情况和信息&#xff1a; 查看磁盘使用情况&#xff1a; df -h这个命令会显示所有文件系统的使用情况&#xff0c;以人类可读的格式&#xff08;例如 GB 或 MB&#xff09;。 查看磁盘分区和设备信息&#xff1a; lsblk这…...

cm211-1刷机教程镜像包

cm211-1刷机教程 包含镜像包酷看桌面 s905l3-l3b通用 镜像包&#xff1a;https://www.123684.com/s/WGAwjv-5tlv3 1.刷机教程 镜像为线刷镜像包&#xff0c;需要短接刷机 短接刷机&#xff0c;导入镜像包 开始即可。到100%就证明可以了。...

Android 15自定义设置导航栏与状态栏,EdgeToEdge适配

背景&#xff1a;android api 35&#xff0c;activity设置EdgeToEdge.enable((ComponentActivity) this)前提下 一、设置导航栏与状态栏颜色 设置的状态栏颜色&#xff0c;只需要设置fitsSystemWindows跟setOnApplyWindowInsetsListener xml设置&#xff1a; 代码&#xff1a;…...

设计模式概览

设计模式是一种在软件设计中被广泛使用的解决方案&#xff0c;旨在提高软件的可重用性、可维护性和可扩展性。设计模式可以分为三大类&#xff1a;创建型、结构型和行为型。 1、创建型模式 这些模式主要关注对象的创建过程&#xff0c;提供了不同的方式来创建对象&#xff0c…...

力扣每日一题打卡 684. 冗余连接

树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges &#xff0c;edges[i] …...

什么是微服务中的反应性扩展?

大家好&#xff0c;我是锋哥。今天分享关于【什么是微服务中的反应性扩展&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 什么是微服务中的反应性扩展&#xff1f; Reactive Extensions 也称为 Rx。这是一种设计方法&#xff0c;我们通过调用多个服务来收集结果…...

【MyBatis】MyBatis-config标签详解

目录 MyBatis配置文件标签详解configuration标签properties标签typeAliases标签environments标签environment标签transactionManager标签dataSource标签mappers标签 MyBatis配置文件标签详解 我们在使用MyBatis框架的时候需要一个配置文件——MyBatis-config.xml来告诉MyBatis…...

使用AVPlayer进行音频播放开发基础设计

在使用AvPlayer进行设计之前&#xff0c;需要获取相应对象&#xff0c;后期围绕该对象展开操作 const player await media.createAVPlayer() 然后对播放器进行初始化设置&#xff1a; player.on(stateChange, (state) > {switch (state) {case initialized:player.prepar…...

API网关的作用--为什么微服务需要一个API网关?

微服务网关核心作用就是协议转换、安全隔离和流量控制 微服务架构中&#xff0c;API网关作为系统的入口点&#xff0c;可以统一处理所有客户端请求。 1&#xff09;协议转换&#xff1a;它能够支持多种通信协议&#xff08;如HTTP、gRPC等&#xff09;之间的相互转换&#xff…...

[0154].第5节:IDEA中创建Java Web工程

我的后端学习大纲 IDEA大纲 1.1.IDEA中配置Tomcat&#xff1a; 1.找打setting: 2.配置Tomcat Server的位置&#xff1a; 3.这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定 4.配置好后&#xff0c;如下图所示 1.2.创建Web工程&#xff1a; 1.建…...

React03 组件 Props

组件 & Props React 组件函数&#xff08; Function &#xff09;组件类&#xff08; Class &#xff09;组件 Props将 props 传递给子组件在子组件中读取 props给 prop 指定一个默认值使用 JSX 展开语法传递 props React 组件 组件本质上就是类和函数&#xff0c;但是与常…...

多线程——线程安全的集合类

目录 前言 一、多线程环境使用 ArrayList 1.进行加锁 2.使用 SynchronizedList 类 3.使用 CopyOnWriteArrayList 类 二、多线程环境使用队列 1.进行加锁 2.使用阻塞队列 三、多线程环境使用哈希表 1.Hashtable 2.ConcurrentHashMap &#xff08;1&#xff09;缩小锁…...

自动化数据库管理:如何通过存储过程动态创建 MySQL 对象

在当今数据驱动的世界中&#xff0c;高效的数据库管理至关重要。本文将展示如何通过存储过程自动化地创建各种 MySQL 数据库对象&#xff0c;包括数据表、视图、字段、索引、约束、存储过程、定时器和事件。通过这些方法&#xff0c;我们可以快速响应业务需求&#xff0c;提高数…...

480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?

技术背景 好多开发者&#xff0c;在设置视频编码参数的时候&#xff0c;对不同分辨率的带宽设置&#xff0c;缺乏相关的经验&#xff0c;实际上&#xff0c;视频分辨率与所需带宽之间的关系受到多个因素的影响&#xff0c;包括视频编码方式、帧率、视频内容的动态程度等。下面…...

unity中GameObject介绍

在 Unity 中&#xff0c;Cube和Sphere等基本几何体是 Unity 引擎的内置预制体&#xff08;Prefabs&#xff09;&#xff0c;它们属于 Unity 中的GameObject 系统&#xff0c;可以在 Unity 的 Hierarchy 视图或 Scene 视图中右键点击&#xff0c;然后在弹出的菜单中选择 3D Obje…...

洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)

P8468 [Aya Round 1 C] 文文的构造游戏 题目描述 [Aya Round 1 C] 文文的构造游戏 - 洛谷 运行代码&#xff08;暴力枚举&#xff09;——超时 #include <stdio.h> #define ll long long const int N 1e6 5; // 计算数组元素的异或和 ll xorSum(ll arr[], int n) {l…...

双击热备和负载均衡的区别

区别&#xff1a; 双机热备 (heartbeat)&#xff1a;对同一应用来讲&#xff0c;永远是主机应用启动&#xff0c;备机应用停止的一主一备模式(两台通常叫双击热备&#xff0c;多台称为高可用) 负载均衡&#xff1a;两台/多台服务器 上同一个应用系统同时工作&#xff0c;分担负…...

如何使用 cPanel 部署 WordPress临时网站

对于依赖WordPress站点或WooCommerce商店的企业来说&#xff0c;在生产环境中直接修改站点风险很大。而WordPress的临时网站是一个更安全的选择&#xff0c;可以通过使用临时网站进行编辑来规避风险。 在本文中&#xff0c;我们将详细介绍WordPress临时网站的相关知识、使用临时…...

青县做网站/推广运营是什么工作

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 jmeter 性能测试数据…...

图片本地化wordpress/公司主页网站设计

数据库设计在系统设计过程中&#xff0c;数据库也是一个不可以忽视的环节&#xff0c;数据库的设计关系到系统的稳定性&#xff0c;所以每个信息的管理&#xff0c;必须设计好&#xff0c;下面是我们用mysql设计的相关系统的数据库。1、 用户表2、 商品信息表…...

可以做动画的网站都有哪些软件/网络营销招聘

在服务器端程序开发领域&#xff0c;性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而&#xff0c;服务器端程序在性能问题上应该有何种基本思路&#xff0c;这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问…...

wordpress 手机模版/线上推广宣传方式有哪些

Sublime Text 3与Sublime Text 2的不同 其实有不少人写过如何让Sublime Text 2支持GB2312和GBK编码&#xff0c;例如这篇。基本原理就是先装好Package Control&#xff0c;然后再通过这个安装ConvertToUTF8的Package。 但是文中的方法在Sublime Text 3时代行不通了&#xff0c;…...

国内做免费视频网站/广州各区最新动态

ORACLE SQL语句分类 SQL语句可以被看作是一种简单、强大的计算机语言或指令。sql语句被分为以下6类&#xff1a;数据定义类、数据操作类、事务控制类、会话控制、系统控制、嵌入式SQL语句。 数据操作语言语句[Data manipulation language&#xff0c;DML] 从一个或多个表或视图…...

中国文化部网站建设现状/下载应用商店

1&#xff09;实验平台&#xff1a;正点原子领航者ZYNQ开发板 2&#xff09;平台购买地址&#xff1a;https://item.taobao.com/item.htm?&id606160108761 3&#xff09;全套实验源码手册视频下载地址&#xff1a;http://www.openedv.com/thread-301505-1-1.html 4&#x…...