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

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程

引言

数据可视化是数据分析的重要组成部分,能够帮助我们更直观地理解数据。Matplotlib 是 Python 中最流行的绘图库之一,而 Jupyter Notebook 则是进行数据分析和可视化的理想环境。本文将详细介绍如何在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化,涵盖基础设置、常见图形绘制、交互式功能以及一些高级技巧,帮助你充分利用这两个强大的工具。

一、环境准备

1.1 安装 Jupyter Notebook 和 Matplotlib

首先,确保你已经安装了 Jupyter Notebook 和 Matplotlib。如果还没有安装,可以使用以下命令:

pip install jupyter matplotlib

1.2 启动 Jupyter Notebook

在命令行中输入以下命令启动 Jupyter Notebook:

jupyter notebook

这将打开一个新的浏览器窗口,显示 Jupyter Notebook 的主页。

1.3 导入必要的库

在新的 Notebook 中,首先导入 Matplotlib 和必要的库:

import matplotlib.pyplot as plt
import numpy as np

二、基础设置

2.1 启用交互式模式

在 Jupyter Notebook 中,可以通过 %matplotlib notebook%matplotlib inline 命令启用交互式模式。

  • %matplotlib notebook:提供更丰富的交互功能,可以缩放、平移图形。
  • %matplotlib inline:生成静态图形,适合于输出简单的图表。

在 Notebook 中输入以下命令以启用交互式模式:

%matplotlib notebook

三、绘制基本图形

3.1 绘制折线图

接下来,绘制一个简单的折线图来展示数据的变化。

# 数据
x = np.linspace(0, 10, 100)
y = np.sin(x)# 创建折线图
plt.plot(x, y, label='Sine Wave', color='blue')# 添加标题和标签
plt.title('Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()# 显示图形
plt.show()

折线图示例

3.2 绘制散点图

散点图用于显示两个变量之间的关系,以下是一个散点图的示例:

# 数据
x = np.random.rand(50)
y = np.random.rand(50)# 创建散点图
plt.scatter(x, y, color='red')# 添加标题和标签
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 显示图形
plt.show()

在这里插入图片描述

四、交互式功能

4.1 缩放和平移

使用 %matplotlib notebook 启用交互式模式后,你可以通过鼠标缩放和平移图形。尝试在图形上滚动鼠标滚轮来缩放,或按住鼠标左键并拖动来平移图形。

4.2 添加滑块

可以使用 ipywidgets 库添加滑块,以便动态调整图形参数。首先,确保安装 ipywidgets

pip install ipywidgets

然后,在 Notebook 中创建一个简单的示例:

import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact# 定义绘图函数
def plot_sine_wave(frequency=1):plt.clf()  # 清除当前图形x = np.linspace(0, 10, 100)y = np.sin(frequency * x)plt.plot(x, y)plt.title(f'Sine Wave: Frequency = {frequency}')plt.xlabel('X-axis')plt.ylabel('Y-axis')plt.grid()plt.show()# 创建滑块
interact(plot_sine_wave, frequency=(1, 10, 0.1));

在这里插入图片描述

4.3 使用按钮

可以创建按钮来触发特定的绘图操作。以下是一个示例:

import matplotlib.pyplot as plt
from ipywidgets import Button# 创建按钮
button = Button(description="Draw Random Points")# 定义按钮点击事件
def on_button_clicked(b):plt.clf()  # 清除当前图形x = np.random.rand(50)y = np.random.rand(50)plt.scatter(x, y, color='green')plt.title('Random Scatter Plot')plt.xlabel('X-axis')plt.ylabel('Y-axis')plt.show()# 绑定事件
button.on_click(on_button_clicked)
button

在这里插入图片描述

五、绘制多图

5.1 使用子图

可以在同一图形中绘制多个子图,以下是一个示例:

# 创建子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))# 绘制数据
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Sine Wave')axs[0, 1].scatter(x, y, color='red')
axs[0, 1].set_title('Scatter Plot')axs[1, 0].hist(y, bins=10, color='blue')
axs[1, 0].set_title('Histogram')axs[1, 1].bar(['A', 'B', 'C'], [3, 7, 5], color='orange')
axs[1, 1].set_title('Bar Chart')# 调整布局
plt.tight_layout()
plt.show()

六、保存图形

可以将绘制的图形保存为文件(如 PNG、PDF 等):

# 数据
x = np.linspace(0, 10, 100)
y = np.sin(x)# 创建折线图
plt.plot(x, y)# 保存图形
plt.savefig('sine_wave.png')# 显示图形
plt.show()

七、高级技巧

7.1 自定义样式

Matplotlib 提供了多种样式,可以通过 plt.style.use() 方法轻松应用。例如:

plt.style.use('ggplot')

7.2 使用动画

可以使用 FuncAnimation 创建动态可视化。以下是一个简单的动画示例:

from matplotlib.animation import FuncAnimation# 数据
x = np.linspace(0, 10, 100)
y = np.sin(x)fig, ax = plt.subplots()
line, = ax.plot(x, y)# 动画更新函数
def update(frame):line.set_ydata(np.sin(x + frame / 10))  # 更新数据return line,# 创建动画
ani = FuncAnimation(fig, update, frames=100, blit=True)plt.show()

在这里插入图片描述

八、总结与拓展

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化,不仅可以提升数据分析的效率,还能使数据展示更加生动。通过本文的学习,你已经掌握了如何设置交互模式、绘制基本图形、使用交互式功能、绘制多图以及一些高级技巧。

8.1 进一步学习的方向

  • 深入了解 Matplotlib 的高级功能,如三维绘图和动画。
  • 探索其他数据可视化库,如 Seaborn、Plotly 和 Bokeh,了解它们的优势和适用场景。
  • 学习如何将可视化结果集成到 Web 应用中,使用 Dash 或 Flask 等框架。

希望这篇教程能帮助你在数据可视化的旅程中更进一步!如有任何疑问或建议,欢迎在评论区留言讨论。

相关文章:

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程 引言 数据可视化是数据分析的重要组成部分,能够帮助我们更直观地理解数据。Matplotlib 是 Python 中最流行的绘图库之一,而 Jupyter Notebook 则是进行数据分析和可视化的理想环境。本文…...

Android13 系统/用户证书安装相关分析总结(三) 增加安装系统证书的接口遇到的问题和坑

一、前言 接上回说到,修改了程序,增加了接口,却不知道有没有什么问题,于是心怀忐忑等了几天。果然过了几天,应用那边的小伙伴报过来了问题。用户证书安装没有问题,系统证书(新增的接口)还是出现了问题。调…...

【C++ 算法进阶】算法提升十三

目录标题 抽牌概率问题 (动态规划)动态规划题目分析代码 洗衣机问题 (贪心)题目题目分析 抽牌概率问题 (动态规划) 动态规划 假设现在有1~N N张牌 每张牌的序号就代表着他的大小 (1 2 … N&am…...

【计网不挂科】计算机网络期末考试(综合)——【选择题&填空题&判断题&简述题】完整试卷

前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 本章是去答案版本。带答案的版本在下…...

2024年11月中旬记录

11.11 pigz的使用 压缩文件夹命令: tar -cvf - dir_name | pigz > xxx.tar.gz 解压分两步,pigz解压和tar解压: pigz -d xxx.tar.gz tar -xf xxx.tar...

单体架构 IM 系统之长轮询方案设计

在上一篇技术短文(单体架构 IM 系统之核心业务功能实现)中,我们讨论了 “信箱模型” 在单体架构 IM 系统中的应用,“信箱模型” 见下图。 客户端 A 将 “信件” 投入到客户端 B 的 “信箱” 中,然后客户端 B 去自己的 …...

Android Studio加载旧的安卓工程项目报错处理

文章目录 Invalid Gradle JDK configuration foundNDK not configuredCMake 3.10.2 was not found安装cmake适配cmake版本号 com.intellij.openapi.externalSystem.model.ExternalSystemExceptiongradle版本过低或下载不了下载gradle与依赖库超时替换gradle国内源替换Maven 仓库…...

阿里公告:停止 EasyExcel 更新与维护

最近,阿里发布公告通知,将停止对知名 Java Excel 工具库 EasyExcel 的更新和维护。EasyExcel 由阿里巴巴开源,作者是玉箫,在 GitHub 上拥有 30k stars、7.5k forks 的高人气。 据悉,EasyExcel 作者玉箫去年已从阿里离…...

Spring 中的 BeanWrapper

BeanWrapper 是 Spring 框架中的一个接口,它提供了一种方式来设置和获取 JavaBean 的属性。JavaBean 是一种特殊的 Java 类,遵循特定的编码约定(例如,私有属性和公共的 getter/setter 方法),通常用于封装数…...

2024鹏城杯msic部分WP

MISC 网安第一课 查找字符key,发现key1,但是没看到key2 后缀改为zip,打开以后发现不一样的地方,三张图片和一个misc文件夹 图片放到010看一眼 编号为1的图片在文件尾发现key2 misc文件夹中是一个out.pcb,放到010发现…...

DAY23|回溯算法Part02|LeetCode: 39. 组合总和 、40.组合总和II 、131.分割回文串

目录 LeetCode: 39. 组合总和 基本思路 C代码 LeetCode: 40.组合总和II 基本思路 C代码 LeetCode: 131.分割回文串 基本思路 C代码 LeetCode: 39. 组合总和 力扣代码链接 文字讲解:LeetCode: 39. 组合总和 视频讲解:带你学透回溯算法-组合总和…...

go map

1、数据结构 // A header for a Go map. type hmap struct {// Note: the format of the hmap is also encoded in cmd/compile/internal/reflectdata/reflect.go.// Make sure this stays in sync with the compilers definition.count int // # live cells size of map.…...

三十七、Python基础语法(异常)

在 Python 中,异常是在程序执行过程中发生的错误情况。当出现异常时,程序的正常执行流程会被中断,并尝试寻找相应的异常处理机制来处理这个错误。 一、异常的类型 Python 中有很多内置的异常类型,例如: ZeroDivision…...

ThreadLocal的熟悉与使用

目录 1.ThreadLocal介绍2.ThreadLocal源码解析2.1 常用方法2.2 结构设计2.3 类图2.4 源码分析2.4.1 set方法分析2.4.2 get方法分析2.4.3 remove方法分析 3.ThreadLocal内存泄漏分析3.1 相关概念3.1.1 内存溢出3.1.2 内存泄漏3.1.3 强引用3.1.4 弱引用 3.2 内存泄漏是否和key使用…...

如何使用 Puppeteer 和 Browserless 抓取亚马逊产品数据?

您可以在亚马逊上找到所有有关产品、卖家、评论、评分、特价、新闻等的相关且有价值的信息。无论是卖家进行市场调研还是个人收集数据,使用高质量、便捷且快速的工具将极大地帮助您准确地抓取亚马逊上的各种信息。 为什么抓取亚马逊产品数据很重要? 亚…...

使用Python求解经典“三门问题”,揭示概率的奇妙之处

三门问题(Monty Hall Problem)是经典的概率问题,描述了一位游戏选手在三个门中选择一扇门,其中一扇门后有奖品,其余两扇门后是空的。选手做出选择后,主持人会打开另一扇空门,然后给选手一次更改…...

数据库基础(6) . DDL

3.2.DDL 数据定义语言 DDL : Data Definition Language 用于创建新的数据库、模式(schema)、表(tables)、视图(views)以及索引(indexes)等。 常见的DDL语句包括SHOW、CREATE、DRO…...

2024 年度分布式电力推进(DEP)系统发展探究

分布式电力推进 (DEP) 的发明是为了尝试和改进现代飞机:我们如何提高飞机的效率?提高它的机动性?缩短它的起飞和着陆距离? DEP 概念有望在提高性能的同时减少燃料消耗,在我们孜孜不倦地努力使航…...

vue通过iframe方式嵌套grafana图表

文章目录 前言一、iframe方式实现xxx.xxx.com拒绝连接登录不跳转Cookie 的SameSite问题解决不显示额外区域(kiosk1) 前言 我们的前端是vue实现的,监控图表是在grafana中的,需要在项目web页面直接显示grafana图表 一、iframe方式实现 xxx.xxx.com拒绝连…...

简单介绍下 Java 中的 @Validated 和 @Valid 注解的区别?

文章目录 Valid:专注单个对象的深度验证适用场景使用示例小结 Validated:聚焦接口分组的批量验证适用场景使用示例小结 主要区别总结如何选择?总结推荐阅读文章 在 Java 开发中,为了确保输入数据符合我们的要求,少不了…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...