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

【四 (3)数据可视化之 Seaborn 常用图表及代码实现 】

目录

    • 文章导航
    • 一、介绍
    • 二、安装Seaborn
    • 三、导入Seaborn
    • 四、设置可以中文显示
    • 五、占比类图表
      • 1、饼图
      • 2、环形图
    • 六、比较排序类
      • 1、条形图
      • 2、箱线图
      • 3、小提琴图
    • 七、趋势类图表
      • 1、折线图
    • 八、频率分布类
      • 1、直方图
    • 九、关系类图表
      • 1、散点图
      • 2、成对关系图
      • 3、热力图

文章导航

【一 简明数据分析进阶路径介绍(文章导航)】

一、介绍

Seaborn同Matplotlib一样,也是Python进行数据可视化分析的重要第三方包。但Seaborn在Matplotlib的基础上进行了更高级的API封装,使得作图更加容易,图形更加漂亮。Seaborn是基于Matplotlib产生的一个模块,专攻统计可视化,可以和Pandas进行无缝链接,使初学者更容易上手。相对于Matplotlib,Seaborn语法更简洁,两者的关系类似于NumPy和Pandas之间的关系。

但是应该强调的是,应该把Seaborn视为Matplotlib的补充,而不是替代物。

二、安装Seaborn

pip install seaborn

三、导入Seaborn

import seaborn as sns

四、设置可以中文显示

import matplotlib.pyplot as plt  # 设置matplotlib支持中文显示  
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体  
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题
from matplotlib import font_manager  # 设置Matplotlib配置参数  
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体  
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号

五、占比类图表

1、饼图

import matplotlib.pyplot as plt  # 假设我们有以下数据  
labels = ['类别A', '类别B', '类别C', '类别D']  
sizes = [15, 30, 45, 10]  # 百分比或数量  # 绘制占饼图  
fig1, ax1 = plt.subplots()  
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)  
ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.  plt.title('占饼图示例')  
plt.show()

在这里插入图片描述

2、环形图

import matplotlib.pyplot as plt  
import numpy as np  # 假设我们有以下数据  
labels = ['类别A', '类别B', '类别C', '类别D']  
sizes = [15, 30, 45, 10]  # 外环数据  
sizes_inner = [10, 15, 30, 5]  # 内环数据  # 确保内环数据不超过外环数据  
sizes_inner = [min(s, si) for s, si in zip(sizes, sizes_inner)]  # 计算百分比  
sizes_pct = [s / sum(sizes) * 100 for s in sizes]  
sizes_inner_pct = [si / sum(sizes_inner) * 100 for si in sizes_inner]  # 绘制环形图  
fig, ax = plt.subplots()  # 外环  
ax.pie(sizes, labels=labels, colors=['blue'], wedgeprops=dict(width=0.3, edgecolor='w'), startangle=90)  # 内环  
ax.pie(sizes_inner,  colors=['red'], wedgeprops=dict(width=0.1, edgecolor='w'), startangle=90)  # 绘制中心圆  
ax.add_artist(plt.Circle((0.5, 0.5), 0.05, fc='white', ec='white'))  # 添加百分比标签  
def func(pct, allvals):  absolute = int(round(pct/100.*np.sum(allvals)))  return "{:.1f}% ({})".format(pct, absolute)  # 外环百分比标签  
wedges, texts, autotexts = ax.pie(sizes, labels=labels, autopct=lambda pct: func(pct, sizes),  wedgeprops=dict(width=0.3, edgecolor='w'), startangle=90)  # 设置标题和等比例显示  
ax.set_title('环形图示例')  
ax.axis('equal')  plt.show()

在这里插入图片描述

六、比较排序类

1、条形图

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  # 假设有一个包含分类变量和连续变量的DataFrame  
data = pd.DataFrame({  'Category': ['A', 'B', 'C', 'D', 'E'],  'Value': [23, 17, 35, 29, 12]  
})  # 绘制条形图  
sns.barplot(x='Category', y='Value', data=data)  # 设置图表标题和轴标签  
plt.title('条形图示例:不同类别的值')  
plt.xlabel('类别')  
plt.ylabel('值')  # 显示图表  
plt.show()

在这里插入图片描述

2、箱线图

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  
import numpy as np  # 假设有一个包含分类变量和连续变量的DataFrame  
np.random.seed(0)  # 设置随机种子以获得可复现的结果  
data = pd.DataFrame({  'Category': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],  'Value': np.random.randn(9) * 100  # 生成正态分布的数据  
})  # 绘制箱线图  
sns.boxplot(x='Category', y='Value', data=data)  # 设置图表标题和轴标签  
plt.title('箱线图示例:不同类别的值分布')  
plt.xlabel('类别')  
plt.ylabel('值')  # 显示图表  
plt.show()

在这里插入图片描述

3、小提琴图

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  
import numpy as np  # 假设有一个包含分类变量和连续变量的DataFrame  
np.random.seed(0)  # 设置随机种子以获得可复现的结果  
data = pd.DataFrame({  'Category': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],  'Value': np.random.randn(9) * 100  # 生成正态分布的数据  
})  # 绘制小提琴图  
sns.violinplot(x='Category', y='Value', data=data)  # 设置图表标题和轴标签  
plt.title('小提琴图示例:不同类别的值分布')  
plt.xlabel('类别')  
plt.ylabel('值')  # 显示图表  
plt.show()

在这里插入图片描述

七、趋势类图表

1、折线图

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  
import numpy as np  # 假设我们有一个包含时间序列和数值的数据集  
np.random.seed(0)  
data = pd.DataFrame({  'date': pd.date_range(start='2023-01-01', periods=12),  'value': np.random.randn(12).cumsum()  
})  # 绘制线图  
sns.lineplot(data=data, x='date', y='value')  # 设置图表标题和轴标签  
plt.title('折线图示例:随时间变化的数值')  
plt.xlabel('日期')  
plt.ylabel('值')  # 显示网格  
plt.grid(True)  # 显示图表  
plt.show()

在这里插入图片描述

八、频率分布类

1、直方图

import seaborn as sns  
import matplotlib.pyplot as plt  
import numpy as np  # 生成随机数据  
np.random.seed(0)  
data = np.random.randn(1000)  # 绘制直方图  
sns.histplot(data, kde=True)  # 设置图表标题和轴标签  
plt.title('直方图示例:数据分布')  
plt.xlabel('值')  
plt.ylabel('频数')  # 显示网格  
plt.grid(True)  # 显示图表  
plt.show()

在这里插入图片描述

九、关系类图表

1、散点图

import seaborn as sns  
import matplotlib.pyplot as plt  
import pandas as pd  # 创建一个模拟的数据集  
data = pd.DataFrame({  'Math': [85, 92, 78, 95, 88, 76, 91, 82, 79, 85],  'English': [88, 90, 82, 93, 87, 79, 92, 83, 80, 86]  
})  # 绘制散点图  
sns.scatterplot(data=data, x='Math', y='English', hue='Math')  # 添加图例标题  
plt.legend(title='数学成绩')  # 设置图表标题和轴标签  
plt.title('学生数学和英语成绩散点图')  
plt.xlabel('数学成绩')  
plt.ylabel('英语成绩')  # 显示网格  
plt.grid(True)  # 调整图表大小  
plt.figure(figsize=(8, 6))  # 显示图表  
plt.show()

在这里插入图片描述

2、成对关系图

import seaborn as sns  
import pandas as pd  
import numpy as np  # 假设我们有一个包含多个连续变量的数据集  
np.random.seed(0)  
data = pd.DataFrame(np.random.randn(200, 4), columns=['A', 'B', 'C', 'D'])  # 绘制成对关系图  
sns.pairplot(data, kind='reg')  # 添加线性回归线  # 设置图表标题  
plt.suptitle('成对关系图示例:多个连续变量之间的关系', y=1.05)  # 显示图表  
plt.show()

##

3、热力图

import seaborn as sns  
import matplotlib.pyplot as plt  
import numpy as np  # 创建一个随机的相关系数矩阵  
np.random.seed(0)  
corr_matrix = np.random.rand(6, 6)  
corr_matrix = (corr_matrix + corr_matrix.T) / 2  # 保证矩阵是对称的  
np.fill_diagonal(corr_matrix, 1)  # 对角线元素设为1  # 绘制热力图  
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')  # 设置图表标题  
plt.title('热力图示例:相关系数矩阵')

在这里插入图片描述

相关文章:

【四 (3)数据可视化之 Seaborn 常用图表及代码实现 】

目录 文章导航一、介绍二、安装Seaborn三、导入Seaborn四、设置可以中文显示五、占比类图表1、饼图2、环形图 六、比较排序类1、条形图2、箱线图3、小提琴图 七、趋势类图表1、折线图 八、频率分布类1、直方图 九、关系类图表1、散点图2、成对关系图3、热力图 文章导航 【一 简…...

ASP.NET-Server.HtmlEncode

目录 背景: 1.转义特殊字符: 2.防止跨站脚本攻击(XSS): 3.确保输出安全性: 4.保留原始文本形式: 5.与用户输入交互安全: 实例说明: 不用Server.HtmlEncode 效果展示: 用Server.HtmlEnc…...

Linux下进行JavaEE开发-安装JDK、Tomcat、MySQL

目录 JDKTomcatMySQL JDK 安装JDK步骤: 1、创建目录mkdir /opt/jdk 2、将jdk压缩包通过xftp6上传到该目录 3、cd /opt/jdk 4、tar -zxvf jdk-8u151-linux-x64.tar.gz 5、mkdir /usr/local/java 6、mv /opt/jdk/jdk1.8.0_151 /usr/local/java 7、修改环境变量…...

视频和图像编码标准或格式的发展关系

MPEG-2 继承 MPEG-1: MPEG-2 是 MPEG-1 的继任者,用于更高质量和分辨率的视频传输,如 DVD 和数字电视。 MPEG-4 继承 MPEG-2: MPEG-4 在 MPEG-2 的基础上增加了更多的功能和灵活性,适用于多媒体交互和网络传输。 H.2…...

移动云行动:5.5G技术引领数字化转型

刚刚结束的全国两会上,有人大代表建议应尽快发挥5G-A(5.5G)优势,加快试点城市布局。此前,中国移动已宣布将在300多个城市启动5.5G商用部署。在通信技术的历史长河中,4G改变了我们的生活方式,而5…...

Git如何与Gitee连接(主) , Git的基础使用方式简述(次)

作者前言 本章默认读者已经下好了git并拥有gitee账号,如果这两步没有完成的话,可以先去下载和注册账号接着继续阅读,由于写这篇博客的时候更关注的是怎么连接,所以先展示需要的部分,后面会介绍git的一些基本使用方法&…...

使用VLC实现自动播放视频

VLC是一款开源的多媒体播放器,它支持大量的视频和音频格式,并且具有强大的脚本和编程接口。虽然VLC本身并没有内置的编程语言,但你可以通过其命令行接口或Lua脚本来实现自动化播放视频的功能。 以下是一个简单的示例,展示如何使用…...

KY199 查找

描述: 输入数组长度 n 输入数组 a[1…n] 输入查找个数m 输入查找数字b[1…m] 输出 YES or NO 查找有则YES 否则NO 。 输入描述: 输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1&…...

html5播放flv视频

参考:flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…...

【知识简略】 简单理解SpringCloud微服务架构:服务注册发现、配置中心、限流、熔断、降级、网关路由等

主要介绍Nacos那一套。 目录 微服务架构1.服务注册发现2.配置中心3.限流、熔断、降级4.网关路由 微服务架构 Spring Cloud 微服务架构中,Nacos 提供了一系列核心组件和服务治理功能,以下是对 Nacos 中涉及的相关组件及其功能的详细解释: 1.…...

福派斯课堂:选择黑背犬的狗粮时需要注意哪些细节?

亲爱的狗友们,选择适合黑背犬的狗粮可不是一件小事哦!🐾 毕竟,黑背犬作为活泼、聪明的犬种,它们的饮食需求可是很特别的。接下来,就让我们一起探讨一下选择黑背犬狗粮时需要注意的细节吧! 1️⃣…...

Python QT 之PySide6简单入门

目录 1.开发环境配置 1.1 下载PySide6 2.2 配置pycharm相关快捷方式 PySide6_Designer - QT Designer 设计UI PySide6_UIC - 将QT Designer生成的UI文件转换为python文件 PySide6_RCC - 将RCC文件转换为python文件 2.第一个开发实例 2.1 QT desiger设计界面 2.2 将ui文…...

美团大规模KV存储挑战与架构实践

KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量,并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上,我们分享了《美团大规模 KV 存储挑战与架构实践》,本文为演讲内容的整理…...

计算机基础1-汇编基础

汇编语言是一种低级的计算机语言,它直接与计算机硬件进行交互。在汇编语言中,指令由一系列助记符(mnemonic)组成,用于执行特定的操作,如数据传输、算术运算和控制流程等。每个指令都对应着一条机器码&#…...

六、项目进度管理

六、项目进度管理 根据项目的范围进行项目的进度管理 项目进度管理主要包含以下几个项目管理过程: 规划进度管理定义活动排列活动顺序估算活动持续时间制定进度计划控制进度 1、规划进度管理 ​ 规划进度管理是为规划、编制、管理、执行和控制项目进度而制定政策、程序和文…...

java操作HBase

创建一个学生信息表,用来存储学生的姓名(姓名作为行键,且假设姓名不会重复)以及考试成绩,其中考试成绩(score)是一个列族,存储了各个科目的考试成绩。然后向student中添加数据 1、HB…...

【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱

1 基本定义 移动中位数滤波算法是一种基于中位数的滤波方法,它通过对信号进行滑动窗口处理,每次取窗口内的中位数作为当前点的估计值,以去除噪声。该算法的主要思想是利用中位数的鲁棒性,对信号中的噪声进行有效的消除。 具体来说…...

浏览器 实现文件下载 完成回调 兼容ie11

首先保证 改文件资源能够通过get请求或者 post请求拿到,基于此基础上我们可以实现得知下载完成后的回调 代码如下 const getFileAndCallback (url, callback) > {//定义执行作用域const that this;//首先 初始化一个原生ajax对象const xhr new XMLHttpReques…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Grid)

网格容器,由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 仅支持GridItem…...

Docker使用(四)Docker常见问题分析和解决收集整理

Docker使用(四)Docker常见问题分析和解决收集整理 五、常见问题 1、 启动异常 【描述】: 【分析】:[rootlocalhost ~]# systemctl status docker 【解决】: (1)卸载后重新安装,不能解决这个问题。 …...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

蓝桥杯 冶炼金属

原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Kafka主题运维全指南:从基础配置到故障处理

#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...