当前位置: 首页 > 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...