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

数据可视化:Matplotlib 与 Seaborn

数据可视化是数据分析中至关重要的一部分,它能帮助我们直观地理解数据的分布、趋势和关系。Python 中,Matplotlib 和 Seaborn 是两个最常用的可视化库。本文将详细介绍如何使用 Matplotlib 和 Seaborn 进行数据可视化,包括基本图形、图形定制、高级图形和实战案例等内容。

一、Matplotlib 基础

Matplotlib 是一个灵活而强大的绘图库,能够创建各种静态、动态和交互式图形。

1. 基本用法

import matplotlib.pyplot as plt # 简单的折线图 x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.xlabel('X axis') plt.ylabel('Y axis') plt.title('Simple Line Plot') plt.show()

2. 图形定制
线条样式和颜色

plt.plot(x, y, linestyle='--', color='r', marker='o') plt.show()

子图
subplots(2, 2) axs[0, 0].plot(x, y, 'r') axs[0, 1].plot(x, y, 'g') axs[1, 0].plot(x, y, 'b') axs[1, 1].plot(x, y, 'y') plt.show()
3. 常见图表
柱状图

categories = ['A', 'B', 'C', 'D'] values = [3, 7, 5, 4] plt.bar(categories, values) plt.show()

散点图

x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6] y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78, 77, 85, 86] plt.scatter(x, y) plt.show()

直方图

data = [1.5, 2.5, 2.5, 3.5, 2.8, 4.2, 4.0, 5.5, 5.2, 4.8, 3.0, 4.0, 3.5, 2.5] plt.hist(data, bins=5) plt.show()

饼图

sizes = [15, 30, 45, 10] labels = ['A', 'B', 'C', 'D'] colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue'] explode = (0.1, 0, 0, 0) plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140) plt.axis('equal') plt.show()

二、Seaborn 基础

Seaborn 是基于 Matplotlib 之上的高级可视化库,专为统计图形而设计,能够生成更美观且信息丰富的图形。

1. 基本用法

import seaborn as sns # 设置主题 sns.set_theme() # 载入示例数据集 tips = sns.load_dataset("tips") # 创建一个简单的散点图 sns.scatterplot(x="total_bill", y="tip", data=tips) plt.show()

2. 常见图表
条形图

sns.barplot(x="day", y="total_bill", data=tips) plt.show()

箱线图

sns.boxplot(x="day", y="total_bill", data=tips) plt.show()

小提琴图

sns.violinplot(x="day", y="total_bill", data=tips) plt.show()

热力图

flights = sns.load_dataset("flights") flights_pivot = flights.pivot("month", "year", "passengers") sns.heatmap(flights_pivot, annot=True, fmt="d", cmap="YlGnBu") plt.show()

联合分布图

sns.jointplot(x="total_bill", y="tip", data=tips, kind="reg") plt.show()

三、Matplotlib 高级用法

1. 复杂图表
叠加图

x = range(1, 6) y1 = [1, 4, 6, 8, 10] y2 = [2, 2, 7, 10, 12] plt.plot(x, y1, label='Line 1') plt.plot(x, y2, label='Line 2') plt.legend() plt.show()

多子图

fig, axs = plt.subplots(2, 1) axs[0].plot(x, y1, 'tab:blue') axs[1].plot(x, y2, 'tab:orange') plt.show()

2. 动态图表

import matplotlib.animation as animation fig, ax = plt.subplots() x = [0] y = [0] line, = ax.plot(x, y) def update(frame): x.append(frame) y.append(frame ** 2) line.set_data(x, y) ax.relim() ax.autoscale_view() return line, ani = animation.FuncAnimation(fig, update, frames=range(10), blit=True) plt.show()

四、Seaborn 高级用法

1. FacetGrid

g = sns.FacetGrid(tips, col="time", row="sex") g.map(sns.scatterplot, "total_bill", "tip") plt.show()

2. PairGrid

g = sns.PairGrid(tips, hue="sex") g.map_diag(sns.histplot) g.map_offdiag(sns.scatterplot) g.add_legend() plt.show()

3. 自定义调色板

sns.set_palette("pastel") sns.boxplot(x="day", y="total_bill", data=tips) plt.show()

4. 风格设置

sns.set_style("whitegrid") sns.boxplot(x="day", y="total_bill", data=tips) plt.show()

五、实战案例:泰坦尼克号数据分析

在这个实战案例中,我们将使用 Matplotlib 和 Seaborn 来分析经典的泰坦尼克号乘客数据集。

1. 数据准备

import pandas as pd # 读取数据 titanic = sns.load_dataset("titanic") # 查看数据基本信息 print(titanic.info())

2. 数据预处理

# 填充缺失值 titanic['age'].fillna(titanic['age'].median(), inplace=True) titanic['embarked'].fillna(titanic['embarked'].mode()[0], inplace=True) titanic.drop(columns=['deck', 'embark_town', 'alive'], inplace=True)

3. 数据可视化
乘客年龄分布

plt.figure(figsize=(10, 6)) sns.histplot(titanic['age'], bins=30, kde=True) plt.title('Age Distribution of Passengers') plt.show()

各类舱乘客生还率

plt.figure(figsize=(10, 6)) sns.barplot(x='class', y='survived', data=titanic) plt.title('Survival Rate by Class') plt.show()

性别与生还率关系

plt.figure(figsize=(10, 6)) sns.barplot(x='sex', y='survived', data=titanic) plt.title('Survival Rate by Gender') plt.show()

年龄与生还率关系

plt.figure(figsize=(10, 6)) sns.violinplot(x='survived', y='age', data=titanic, split=True) plt.title('Age Distribution by Survival') plt.show()

结论

通过本文,我们深入了解了 Matplotlib 和 Seaborn 两个强大的 Python 可视化库的基础和高级用法。从基本图形的绘制到复杂图表和动态图表的创建,再到实际数据分析案例的应用,我们可以看到,Matplotlib 提供了灵活而强大的功能,Seaborn 则在统计图形方面更为便捷和美观。掌握这两个工具,将极大地提升我们在数据分析中的可视化能力。

参考文献

  1. Matplotlib 官方文档
  2. Seaborn 官方文档
  3. Pandas 官方文档
  4. 泰坦尼克号数据集

相关文章:

数据可视化:Matplotlib 与 Seaborn

数据可视化是数据分析中至关重要的一部分,它能帮助我们直观地理解数据的分布、趋势和关系。Python 中,Matplotlib 和 Seaborn 是两个最常用的可视化库。本文将详细介绍如何使用 Matplotlib 和 Seaborn 进行数据可视化,包括基本图形、图形定制…...

【linux】自定义快捷命令/脚本

linux自定义快捷命令 场景自定义命令自定义脚本 场景 深度学习经常要切换到自己环境,conda activate mmagic,但是又不想每次重复打这么多字,想使用快捷命令直接切换。 自定义命令 使用别名(alias)或自定义脚本来创建…...

使用onnxruntime加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…...

QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数

在窗体里放置一个单行文本编辑控件(QLineEdit)、一个标签控件(QLabel)和一个文本浏览控件(QTextBrowser),在单行文 本编辑控件里的文本被编辑时,标签控件和文本浏览控件都会同步显示…...

C++ AVL树 详细讲解

目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查 …...

Faster R-CNN:端到端的目标检测网络

本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络,在用户看来,它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN,我们还必须快速概…...

如何给 MySQL 表和列授予权限?(官方版)

目录 授予表级别权限 授予列级别权限 如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤,也是企业级使用MySQL数据库的起步点,以下分别参照官方教程整理的MySQL数据库的权限操作。 以下的语句可以直接使用MySQL的命令行进行操作(如何…...

攻防世界testre做法(考点:base58)

在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。 base64编码原理:1,在使用base64加…...

计算机视觉与模式识别实验1-1 图像的直方图平衡

文章目录 🧡🧡实验流程🧡🧡1.读入图像‘rice.png’,在一个窗口中显示灰度级n64,128和256的图像直方图。2.调解图像灰度范围,观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…...

【C++课程学习】:C++入门(函数重载)

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🌈函数重载: 🍉1.参数个数不同: 🍉2.参数…...

skywalking介绍及搭建

链路追踪框架比对: skywalking安装部署: 下载地址:Downloads | Apache SkyWalking 配置微服务与skywalking整合: copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins,然后重启skywalking 监控界面…...

分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构

导语 焊接是汽车制造过程中一个关键环节,白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用,主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…...

模式识别选择题

影响K-均值聚类算法效果的主要因素之一是什么? A. 初始聚类中心的选取 B. 样本输入顺序 C. 模式相似性测度 D. 分类准则 答案:A支持向量机(SVM)在处理非线性问题时,通常使用什么方法? A. 引入核函数 B. 增加…...

【Java基础】线程方法

start():启动线程,使线程进入就绪状态。 run():线程执行的代码逻辑,需要重写该方法。 停止线程 void interrupt() 中断线程,让它重新去争抢cpu 如果目标线程长时间等待,则应该使用interrupt方法来中断等待…...

C++之动态数组

C给我们提供了一个叫Vector的类,这个Vector在std命名空间中。这个Vector有点像一个集合,一个不强制其实际元素具有唯一性的集合,和数组一样,但是和C普通的数组又不太一样,和标准的数组不同当你创建Vector时&#xff0c…...

使用 image-combiner 开源项目实现对海报图片的生成

1:gitee 项目地址 image-combiner: ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于…...

【缓存】框架层常见问题和对策

缓存是为了加快读写速度,再了解redis这类框架层的缓存应用之前,我们不妨先思考下操作系统层面的缓存解决方案,这样有助于我们更深的理解缓存,哪些是系统层面的,哪些是服务层面。 以下是一些常见的缓存问题及其解决方案…...

【FAS】《CN103106397B》

原文 CN103106397B-基于亮瞳效应的人脸活体检测方法-授权-2013.01.19 华南理工大学 方法 / 点评 核心方法用的是传统的形态学和模板匹配,亮点是双红外发射器做差分 差分:所述FPGA芯片控制两组红外光源(一近一远)交替亮灭&…...

3D按F3为什么显示不出模型?---模大狮模型网

对于3D建模软件的用户来说,按下F3键通常是用来显示或隐藏模型的功能之一。然而,有时当按下F3键时,却无法正确显示模型,这可能会让用户感到困惑。模大狮将探讨这种情况发生的可能原因以及解决方法,帮助设计师们更好地理…...

C++设计模式——Adapter适配器模式

一,适配器模式简介 适配器模式是一种结构型设计模式,用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如,现有一个名为"Reader()"的API接口只能解析txt格式的文件,给这…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

腾讯云V3签名

想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

WebRTC调研

WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...