当前位置: 首页 > 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格式的文件,给这…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

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

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

MMaDA: Multimodal Large Diffusion Language Models

CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...