当前位置: 首页 > 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 开发中,为了确保输入数据符合我们的要求,少不了…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

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

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

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...