在 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 开发中,为了确保输入数据符合我们的要求,少不了…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...