【四 (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('热力图示例:相关系数矩阵')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

Apache zookeeper kafka 开启SASL安全认证

背景:我之前安装的kafka没有开启安全鉴权,在没有任何凭证的情况下都可以访问kafka。搜了一圈资料,发现有关于sasl、acl相关的,准备试试。 简介 Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发…

【人工智能入门必看的最全Python编程实战(5)】

--------------------------------------------------------------------- 1.AIGC未来发展前景 未完持续… 1.1 人工智能相关科研重要性 拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!! 拥有一篇人工…

AIDD简介——分类和回归任务

🌞欢迎来到AI生物医药的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🌠本阶段属于练气阶段,希望各位仙友顺利…

《ARM汇编与逆向工程 蓝狐卷 基础知识》

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

Ubuntu20下C/C++编程开启TCP KeepAlive

1、在linux下,测试tcp保活,可以使用tcp自带keepalive功能。 2、几个重要参数: tcp_keepalive_time:对端在指定时间内没有数据传输,则向对端发送一个keepalive packet,单位:秒 tcp_keep…

拌合楼内部管理系统开发(一)立个flag,开始做准备

前言:项目背景情况介绍 公司有意开发一套适合拌合楼的内部管理系统给到客户使用,接触过一家拌合楼行业内号称标杆的企业,去过参观学习的都觉得他们软件好用,但是从软件开发角度看,就是crud钉钉机器人无人值守。虽然公司…

Python语法糖

N u m P y NumPy NumPy的 n d i t e r nditer nditer nditer 是 NumPy 提供的一种多维迭代器,用于对多维数组进行迭代操作。它可以替代传统的嵌套循环,在处理多维数组时更加方便和高效。 迭代器可以按照不同的顺序遍历数组的元素,也可以控制…

JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)

本文主要介绍JDK8和JDK11在Ubuntu18上切换,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 🌄人…

C++的类和对象(七):友元、内部类

目录 友元 友元函数 友元类 内部类 匿名对象 拷贝对象时的一些编译器优化 再次理解类和对象 友元 基本概念:友元提供了一种突破封装的方式,有时提供了便利,但是友元会增加耦合度,破坏了封装,所以友元不宜多用&…

[嵌入式系统-39]:龙芯1B 开发学习套件 -10-PMON启动过程Sstart.S详解

目录 一、龙芯向量表与启动程序的入口(复位向量) 1.1 复位向量: 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 (1)与CPU相关的一些宏定义…

北斗卫星在桥隧坡安全监测领域的应用及前景展望

北斗卫星在桥隧坡安全监测领域的应用及前景展望 北斗卫星系统是中国独立研发的卫星导航定位系统,具有全球覆盖、高精度定位和海量数据传输等优势。随着卫星导航技术的快速发展,北斗卫星在桥隧坡安全监测领域正发挥着重要的作用,并为相关领域…

element-plus 完成下拉切换功能

项目场景: element-plus element-plus 完成下拉切换功能,选用了popover 组件去进行样式修改,本来大概是要实现下面这样的样式效果,没想到调整的时候,这个选择的高亮模块总是超出。 实现效果: 解决方案&am…

android HAL层崩溃排查记录

要最近在调试系统HDMI CEC功能时,遇到一个奇怪的崩溃问题,这边记录下。 初步分析 先上日志: --------- beginning of crash 03-06 10:48:25.503 1133 1133 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** **…

微信小程序 - 基于scroll view 实现下拉刷新

简介 本文会基于scroll view 实现下拉刷新效果&#xff0c;在下拉的时候会进入loading状态。 实现效果 效果如上图所示&#xff0c;在下拉到底部时候&#xff0c;会出现loading条&#xff0c;在处理完成后loading条消失。 具体代码 布局 <scroll-view scroll-y style&qu…

【AIGC调研系列】通义灵码与copilot的对比

通义灵码与GitHub Copilot的对比主要集中在几个方面&#xff1a;代码编写能力、免费性、操作界面和适配性。 首先&#xff0c;在代码编写能力上&#xff0c;虽然GitHub Copilot在整体上要强于通义灵码&#xff0c;但通义灵码的能力也不算弱&#xff0c;并且在某些特定的小类任…

Windows下anaconda下载安装教程,多图预警【步骤详细版】

Windows下anaconda下载安装教程 一、下载anaconda二、安装详细步骤<图示>1、安装Anaconda2、修改环境变量 三、验证是否安装成功1、查看python版本2、查看pip版本 特别致谢大佬的教程 一、下载anaconda 官网下载&#xff0c;速度太感人&#xff0c;所以这里选择清华开源…

01背包 与 emo题目背景(周超人的遗憾) 的爱恨情仇

本题背景有意思&#xff0c;大家当乐子看&#xff0c;目前没有找到题目原题&#xff0c;也没有写过完全是01背包模板的题目&#xff0c;该篇文章大家注意其01背包一维写法的模板就好&#xff0c;注意各个关键点 ✨欢迎来到脑子不好的小菜鸟的文章✨ &#x1f388;创作不易&…

从政府工作报告探计算机行业发展——探索计算机行业发展蓝图

目录 前言 一、政策导向与行业发展 &#xff08;一&#xff09;政策导向的影响 &#xff08;二&#xff09;企业如何把握政策机遇推动创新发展 二、技术创新与产业升级 三、数字经济与数字化转型 四、国际合作与竞争态势 五、行业人才培养与科技创新 &#xff08;一&a…

论文阅读——RemoteCLIP

RemoteCLIP: A Vision Language Foundation Model for Remote Sensing 摘要——通用基础模型在人工智能领域变得越来越重要。虽然自监督学习&#xff08;SSL&#xff09;和掩蔽图像建模&#xff08;MIM&#xff09;在构建此类遥感基础模型方面取得了有希望的结果&#xff0c;但…