第五章. 可视化数据分析图表—Seaborn图表(折线图,直方图,条形图,散点图)

news2024/11/16 12:57:43

第五章. 可视化数据分析图

5.7 Seaborn图表

Seaborn是一个基于Matplotlib的高级可视化效果库,偏向于统计图表,主要针对的是数据挖掘和机器学习中的变量特征选取,相比Matplotlib,他的语法相对简单,但是具有一定的局限性,本节主要介绍折线图,直方图,条形图,散点图。

1.Seaborn图表的基本设置

1).背景风格:

设置Seaborn的背景风格,主要使用axes_style函数和set_style函数,Seaborn有5个背景主题,适用与不同的场景和主题:
·darkgrid:灰色网格(默认值,主题中的白线能避免影响数据的表现)
·whitegrid:白色网格(更适合表达“重数据元素”)
·dark:灰色背景
·white:白色背景
·ticks:四周带刻度的白色背景

2).边框控制(despine函数):

·移除顶部和右边边框

seaborn.deapline()

·使用两个坐标轴离开一段距离

seaborn.deapline(offset=5,trim=True)

·移除左边边框,与set_style方法的白色网格搭配只用效果更佳

seaborn.set_style('whitegrid')
seaborn.deapline(left=True)

·移除指定边框,设置为True即可

seaborn.deapline(fig=None,ax=None,top=True,right=True,left=True,bottom=False,offset=None,trim=False)

2.折线图 (seaborn.relplot 和 seaborn.lineplot)

在Seaborn中实现折线图的两种方法:一是在relplot函数中通过设置kind参数为line,二是使用lineplot函数直接绘制折线图

1).语法:

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs)

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 绘制折线图
ax = sns.relplot(x='姓名', y='语文', kind='line', data=df)

# 设置文本标签
ax = ax.axes[0,0]
for x, y in zip(df['姓名'], df['语文']):
    ax.text(x, y, '%.2f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

3).语法:

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

4).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet8')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 设置画布大小
plt.figure(figsize=(8, 6), dpi=100)

# 绘制折线图
ax = sns.lineplot(x='姓名', y='成绩', hue='学科', data=df)

# 设置文本标签
x_label = df['姓名']
x_label = np.arange(len(x_label))
width = 0.25

dis1 = x_label
dis2 = x_label
dis3 = x_label

for x, y in zip(x_label, df['成绩']):
    discuss = int(x / 3)
    if x % 3 == 0:
        ax.text(dis1[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    elif x % 3 == 1:
        ax.text(dis2[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    else:
        ax.text(dis3[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 设置图例
ax.legend(loc='upper right')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

3.直方图 (seaborn.distplot)

1).语法:

seaborn.distplot(data=None, bins=None, hist=True, kde=True, rug=False, fit=None,hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,color=None, vertical=False, norm_hist=False, axlabel=None,label=None, ax=None, x=None)

参数说明:
data:数据
bins:设置矩形图数量
hist:是否显示条形图
kde:是否显示核密度估计图,默认值为True,显示核密度估计图
rug:是否在x轴上显示观测的小细条
fit:拟合的参数分布图形

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

data = df[['语文']]
sns.distplot(data, kde=True)

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

4.条形图 (seaborn.barplot)

1).语法:

seaborn.barplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,estimator="mean", errorbar=("ci", 95), n_boot=1000, units=None, seed=None,orient=None, color=None, palette=None, saturation=.75, width=.8, errcolor=".26", errwidth=None, capsize=None, dodge=True, ci="deprecated", ax=None, **kwargs)

参数说明:
x,y:x,y轴数据
hue:分类字段
order,hue_order:变量绘图顺序
orient:条形图是水平显示还是竖直显示
capsize:误差线的宽度
estimator:每类变量的统计方式,默认值:mean

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet8')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 设置画布大小
plt.figure(figsize=(8, 6), dpi=100)

# 绘制条形图
ax = sns.barplot(x='姓名', y='成绩', hue='学科', data=df)

# 设置文本标签
x_label = df['姓名']
x_label = np.arange(len(x_label))
width = 0.25

dis1 = x_label - width
dis2 = x_label
dis3 = x_label + width

for x, y in zip(x_label, df['成绩']):
    discuss = int(x / 3)
    if x % 3 == 0:
        ax.text(dis1[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    elif x % 3 == 1:
        index = dis2[discuss]
        ax.text(index, y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    else:
        index = dis3[discuss]
        ax.text(index, y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 设置图例
ax.legend(loc='upper right')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

5.散点图 (seaborn.relplot)

1).语法:

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs)

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 绘制折线图
ax = sns.relplot(x='姓名', y='语文', data=df)

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

注意:代码中所涉及到的函数和参数,在图表的常用设置1 和 图表的常用设置2 有所介绍

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

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

相关文章

Windows下安装oracle19c

oracle 19c 不支持 Windows 7 和 Windows 8 以及 Windows Server 2008(GetOverlappedResultEx function 函数不支持 win7),支持 Windows 8.1 以上及 Windows Server 2012 1.下载地址: https://www.oracle.com/database/technolo…

Gnoppix Linux 22.12 发布

导读基于 Kali Linux 的 Linux 滚动发行版 Gnoppix 22.12 带来了 GNOME 43、Linux 内核 6.0 和新的升级。作为传统的现场 CD 发行版 Knoppix 项目的继承者,Gnoppix Linux 是专门为渗透测试和反向工程而设计的。它为网页应用安全和数字权利保护进行了优化。除了对安全…

DNA甲基化重编程为红梨中光诱导的花青素生物合成提供了见解

期刊:Plant Science 影响因子:5.363 发表时间:2022 样本类型:果皮 客户单位:南京农业大学 凌恩生物客户南京农业大学吴俊团队发表在《Plant Science》上的文章“DNA methylatio…

【Ctfer训练计划】——(七)

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

【数据结构】LinkedList与链表

作者:✿✿ xxxflower. ✿✿ 博客主页:xxxflower的博客 专栏:【数据结构】篇 语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐ 文章目录✿1.ArrayList的缺陷✿2.链表2.1链表的概念及结构2.2链表的模拟实现MySingleLi…

aws eks 集群container runtime升级容器管理工具的切换

参考资料 https://cloud-atlas.readthedocs.io/zh_CN/latest/kubernetes/debug/crictl.htmlhttps://zhuanlan.zhihu.com/p/562014518 container runtime Low-Level和High-Level容器运行时。runc、lxc、lmctfy、Docker(容器)、rkt、cri-o。每一个都是为…

springboot simple (12) springboot RabbitMQ

这里首先简单的介绍了RabbitMQ ,然后实现了springboot集成RabbitMQ ,包含两个工程: 1 Producer 生产者 2 Consumer 消费者 1 RabbitMQ 简介 AMQP :Advanced Message Queue,高级消息队列协议。 RabbitMQ 是一个由 Erl…

智能大屏兴起,酷开科技赋能营销战略!

随着科技的发展,智能大屏的功能与技术都在日新月异的快速更迭,年轻消费群体也对大尺寸智能大屏表现出了特别的偏爱,以前说到看视频、网上购物、阅读书籍时,人们第一时间就会想到手机,但随着智能大屏的出现,…

商用设计素材库,设计师必备。

免费、商用设计素材网站。 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky站内平面海报、UI设计、电商淘宝、免抠、高清图片、样机模板等素材非常齐全。还有在线抠图、CDR版本转换功能,能有效的为设计师节省找素材时间,提高工作效率。网站素材都能免…

LeetCode链表经典题目(二)

1. LeetCode203. 移除链表元素 2. LeetCode707.设计链表 3. LeetCode206. 反转链表 4. LeetCode24. 两两交换链表中的节点​ 5. LeetCode19. 删除链表的倒数第 N 个结点 6. LeetCode面试题 02.07. 链表相交 7. LeetCode142. 环形链表 II​ 1. LeetCode203. 移除链表元素 …

基于同豪的道路桥梁设计方案如何实现数字化交付(web发布)

0序: 当下有部分设计人员除了使用Revit、Microstation之外也使用过程的同豪软件进行道路桥梁的BIM建模。如何对同豪的BIM模型进行数字化交付呢? 1数据导出为FBX 具体导出过程可以参考: 数据的导出只要按步骤导出就行,非常简单…

2023最让人期待的日历!每个IT技术人必备

一转眼,2022年已经要接近尾声了..... 这一年的你过的怎么样呢?相比上一年的自己有什么变化呢? 凡是过往皆为序章,所有将来皆为可盼!在2023年即将到来之际给大家推荐一本非常适合IT技术人的日历👉「小滴日历…

python—you-get下载工具、wget下载工具

目录 wget you-get wget wget工具下载:GNU Wget 1.21.3 for Windows wget工具见:python-外部程序的调用os库、subprocess 模块_觅远的博客-CSDN博客_python外部库调用调出 you-get you-get是一款实用的网站视频下载工具。可以很轻松的下载到网络上…

极限学习机ELM回归预测(MATLAB代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

【数据结构与算法】第十七篇:图论万字解析(进阶篇)

👀作者简介:大家好,我是 快到碗里来~ 🚩🚩 个人主页:快到碗里来~ 支持我:点赞关注~不迷路🧡🧡🧡 ✔系列专栏:数据结构与算法⚡⚡⚡ (❁◡❁)励志格…

代码随想录算法训练营第十一天(栈与队列)| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

代码随想录算法训练营第十一天(栈与队列)| 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值 20. 有效的括号 讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。 大家先…

激发原创力量,逐梦数智未来 | 麒麟信安闪耀openEuler Summit 2022

[中国,北京,2022年12月29日]由欧拉开源社区发起并联合华为、麒麟信安、麒麟软件、统信软件等伙伴,共同举办的openEuler Summit 2022于线上举行。 会上,开放原子开源基金会宣布openEuler项目群成立;同时,新…

CVPR 2021|Deep-SfM-Revisited:DeepLearn+经典SfM流程

🏆前言:文章回顾了深度学习在SfM中的应用,并提出了一种新的深度两视图SfM框架。该框架结合了深度学习和经典SfM几何算法的优点。在各个数据集上取得较好的结果。 文章目录解决的问题基本流程实施细节光流估计相机位姿估计尺度不变的深度估计损…

关于安科瑞电力监控系统在电力工程中的应用与对策

摘要:随着经济的发展,能源消耗速度正不断加快,因此我国提出了绿色可持续发展战略,要求在发展建设中以节能为主,不断减少资源能耗,而电能便是首要控制内容。如今我国为电能使用,对计量表进行了优…

《PyTorch深度学习实践》完结合集-P4反向传播作业

二次函数的反向传播 代码: import torch x_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0] w1 torch.Tensor([1.0]) w1.requires_grad True #定义要进行反向传播 w2 torch.Tensor([1.0]) w2.requires_grad True b torch.Tensor([1.0]) b.requires_grad T…