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

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

SOC-ESP32S3部分:30-I2S音频-麦克风扬声器驱动

飞书文档https://x509p6c8to.feishu.cn/wiki/SKZzwIRH3i7lsckUOlzcuJsdnVf I2S简介 I2S(Inter-Integrated Circuit Sound)是一种用于传输数字音频数据的通信协议,广泛应用于音频设备中。 ESP32-S3 包含 2 个 I2S 外设,通过配置…...

【向量库】Weaviate概述与架构解析

文章目录 一、什么是weaviate二、High-Level Architecture1. Core Components2. Storage Layer3. 组件交互流程 三、核心组件1. API Layer2. Schema Management3. Vector Indexing3.1. 查询原理3.2. 左侧:Search Process(搜索流程)3.3. 右侧&…...

Angular中Webpack与ngx-build-plus 浅学

Webpack 在 Angular 中的概念 Webpack 是一个模块打包工具,用于将多个模块和资源打包成一个或多个文件。在 Angular 项目中,Webpack 负责将 TypeScript、HTML、CSS 等文件打包成浏览器可以理解的 JavaScript 文件。Angular CLI 默认使用 Webpack 进行项目…...

Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南

Spring Boot 中实现 HTTPS 加密通信及常见问题排查指南 在金融行业安全审计中,未启用HTTPS的Web应用被列为高危漏洞。通过正确配置HTTPS,可将中间人攻击风险降低98%——本文将全面解析Spring Boot中HTTPS的实现方案与实战避坑指南。 一、HTTPS 核心原理与…...

CKA考试知识点分享(2)---ingress

CKA 版本:1.32 第二题是涉及ingress相关。本文不是题目,只是为了学习相关知识点做的实验。 1. 环境准备 需要准备一套K8S集群。 1.1 安装ingress-nginx 下载deploy文件: wget -O controller-v1.12.2.yaml https://raw.githubusercontent…...