Python可视化(二)——Seaborn

Seaborn是一个基于matplotlib的可视化库,其为用户提供了高级接口,并且该工具还深度集成了pandas的数据结构。并且该工具该集成了很多数据库,配合官网给出的代码示例,可以更方便的进行操作。

官网对它的介绍为:

Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics.Seaborn is a library for making statistical graphics in Python. It builds on top of matplotlib and integrates closely with pandas data structures.Seaborn helps you explore and understand your data. Its plotting functions operate on dataframes and arrays containing whole datasets and internally perform the necessary semantic mapping and statistical aggregation to produce informative plots. Its dataset-oriented, declarative API lets you focus on what the different elements of your plots mean, rather than on the details of how to draw them.
官网地址为:https://seaborn.pydata.org/

提示:引入seaborn会修改matplotlib默认的颜色方案和绘图类型,以提高可读性和美观度。即使不使用seaborn API,可能也会引入seaborn,作为提高美观度和绘制常见matplotlib图形的简化方法。

和matplotlib一般被命令为plt一样,seaborn一般被命名为sns. 通常采用如下的导入方式:

import seaborn as sns

示例

这里先看一个示例:

# Import seaborn
import seaborn as sns
import pandas as pd# Apply the default theme
sns.set_theme()# Load an example dataset
tips = pd.read_csv(r"tips.csv")# Create a visualization
sns.relplot(data=tips,x="total_bill", y="tip", col="time",hue="smoker", style="smoker", size="size",
)

首先在上面的代码中,导入了seaborn、pandas两个库。

然后set_theme()实际则是使用matplotlib rcParam系统,并对matplotlib进行配置,从而影响到最后的显示。不过上面使用的是默认配置。

除了默认配置之外,可以使用参数独立控制绘图的风格和缩放比例等。

def set_theme(context="notebook", style="darkgrid", palette="deep",font="sans-serif", font_scale=1, color_codes=True, rc=None):"""Set aspects of the visual theme for all matplotlib and seaborn plots.This function changes the global defaults for all plots using thematplotlib rcParams system. The themeing is decomposed into several distinctsets of parameter values.The options are illustrated in the :doc:`aesthetics <../tutorial/aesthetics>`and :doc:`color palette <../tutorial/color_palettes>` tutorials.Parameters----------context : string or dictScaling parameters, see :func:`plotting_context`.style : string or dictAxes style parameters, see :func:`axes_style`.palette : string or sequenceColor palette, see :func:`color_palette`.font : stringFont family, see matplotlib font manager.font_scale : float, optionalSeparate scaling factor to independently scale the size of thefont elements.color_codes : boolIf ``True`` and ``palette`` is a seaborn palette, remap the shorthandcolor codes (e.g. "b", "g", "r", etc.) to the colors from this palette.rc : dict or NoneDictionary of rc parameter mappings to override the above.Examples--------.. include:: ../docstrings/set_theme.rst"""set_context(context, font_scale)set_style(style, rc={"font.family": font})set_palette(palette, color_codes=color_codes)if rc is not None:mpl.rcParams.update(rc)

这里和官网的示例有差异,是直接将csv文件下载到本地利用pd.read_csv()方法导入的。

之前提到seaborn和pandas关系紧密,因此能够直接使用pandas中的数据结构。

最后是使用relplot()函数创建的图表。

和matplotlib不同,seaborn的图表函数中,data参数是必须的,该参数指定了数据集,seaborn能够从该参数中推断要显示的数据。其他参数都是可选的,并且不需要指定图表元素的属性,比如颜色和标记。

数据结构

关于数据结构,使用seaborn最好是使用pandas DataFrame或者numpy array。

虽然list也可以直接使用,但是直接使用list不能发挥seaborn的优势,有点大材小用了。

data = [5,7,6,2,6,8,6,2,4,9]sns.relplot(data, kind="line")

参数

这里看一下常用的几个参数:

  • data:表示要使用的数据集。可以是 Pandas DataFrame、NumPy 数组或其他数据结构。
  • x、y:表示要绘制的数据的变量。在大多数函数中,x 和 y 分别表示横轴和纵轴上的数据变量。
  • col:用于指定分组图表中的列变量。当需要根据数据的某个特定变量进行分组并绘制多个子图时,可以使用 col 参数。
  • hue:表示要对数据进行分组的变量,可以通过颜色或其他视觉属性来区分不同的组。
  • palette:表示要使用的颜色调色板。可以是预定义的调色板名称,也可以是自定义的颜色列表。
  • size、sizes:表示散点图中数据点的大小。size 参数控制所有数据点的大小,而 sizes 参数可以传入一个数组或列表,用于指定每个数据点的大小。
  • -style:表示散点图中数据点的样式。可以是预定义的样式名称,也可以是一个数组或列表,用于为每个数据点指定样式。
  • kind:用于指定要创建的图表类型
  • alpha:表示图表元素的透明度。可以是一个介于 0 和 1 之间的浮点数。
  • linewidth、edgecolor:表示线条的宽度和颜色。
  • bins:表示直方图中的条形数或箱线图中箱子的数量。
  • orient:表示条形图的方向,可以是 'v'(垂直)或 'h'(水平)。
  • ax:用于指定要在其上绘制图表的matplotlib Axes对象

上图总结起来就是:

  • 源数据为tips
  • x轴数据为tips中的total_bill列,y轴数据为tips中的tip列
  • 利用time列中的数据进行分组,time列中存在两类数据,分别为Lunch和Dinner,所以分为两个图
  • hue参数为smoker列,smoker列中存在两类数据,分别为Yes和No,所以每个图中又分为两类,即每个图中的数据按照Yes和No分为两类
  • style参数为smoker列,smoker列中存在两类数据,分别为Yes和No,这里用颜色区分,颜色为默认设置中的配置
  • size参数为size列,size列中存在6类,在图中就是数据点的大小不同

而kind参数主要有以下几种:

  • kind='line':折线图(Line plot)
  • kind='scatter':散点图(Scatter plot)
  • kind='bar':条形图(Bar plot)
  • kind='barh':水平条形图(Horizontal bar plot)
  • kind='hist':直方图(Histogram)
  • kind='box':箱线图(Box plot)
  • kind='violin':小提琴图(Violin plot)
  • kind='pie':饼图(Pie chart)
  • kind='heatmap':热力图(Heatmap)
  • kind='kde':核密度估计图(Kernel density plot)
  • kind='reg':线性回归图(Linear regression plot)

其它的参数也都有设置值,可查看官网或相关文档。

图表类型

从上面可以看出使用seaborn和matplotlib的区别,seaborn更加简洁,但是matplotlib更加灵活。

使用seaborn不用考虑图表的格式,线型,颜色,字体等等,只需要关注数据的分析。

而seaborn中主要的图表类型有三大类,分别是:

  • 关系图
  • 分布图
  • 分类图

其中关系图的接口为relplot(),它是一个Figure-level的函数。

在关系图中,可以使用kind参数来指定关系图的类型,例如散点图(scatter plot)、折线图(line plot)等。

另外也可以直接使用对应的接口做出对应的图形,比如:

  • relplot():创建关系图的通用函数,可以绘制散点图、折线图、小提琴图等不同类型的图表。
  • scatterplot():绘制散点图,用于显示两个连续变量之间的关系。
  • lineplot():绘制折线图,用于显示一个连续变量随另一个连续变量的变化趋势。

将上面的rellplot()函数改为scatterplot()函数,一样可以得到相同的结果,只是从美观的角度来看,没有relplot()的结果好看

import matplotlib.pyplot as pltf, axs = plt.subplots(1, 2)sns.scatterplot(data=tips[tips["time"] == "Dinner"], x="total_bill", y="tip", hue="smoker", style="smoker", size="size", ax=axs[0])
sns.scatterplot(data=tips[tips["time"] == "Lunch"], x="total_bill", y="tip", hue="smoker", style="smoker", size="size", ax=axs[1])f.tight_layout()

分布图的接口为displot(),它也是一个Figure-level的函数。

在分布图中,可以使用kind参数来指定分布图的类型,例如直方图(hist plot)、核密度估计图(kde plot)、累积分布图(ecdf plot)等。

另外也可以直接使用对应的接口做出对应的图形,比如:

  • displot():绘制直方图、核密度估计图和经验累积分布函数等不同类型的单变量分布图。
  • histplot():绘制直方图,用于显示单变量的分布。
  • kdeplot():绘制核密度估计图,用于显示单变量的概率密度估计。
  • ecdfplot():绘制经验累积分布函数图,用于显示单变量的经验累积分布。
  • rugplot():绘制地毯图,用于显示单变量的数据点分布。

分类图的接口为catplot(),它也是一个Figure-level的函数。

在分类图中,可以使用kind参数来指定分布图的类型,例如条形图(bar plot)、箱线图(box plot)、小提琴图(violin plot)等。

另外也可以直接使用对应的接口做出对应的图形,比如:

  • barplot():绘制条形图,用于显示分类变量和数值变量之间的关系。
  • pointplot():绘制点图,用于显示分类变量和数值变量之间的关系,并显示置信区间。
  • boxplot():绘制箱线图,用于显示分类变量和数值变量之间的关系,并显示分位数和异常值。
  • violinplot():绘制小提琴图,用于显示分类变量和数值变量之间的关系,并显示分布和概率密度。
  • stripplot():绘制散点图,用于显示分类变量和数值变量之间的关系。
  • swarmplot():绘制蜂群图,用于显示分类变量和数值变量之间的关系,并在同一位置上显示每个数据点。

其实可以将seaborn的图像看成是matplotlib的图像,只是在matplotlib的基础上进行了美化,使用户可以关注于数据分析本身,而不是图像的细节控制。

图像的保存

既然seaborn的图像是matplotlib的图像,那么就可以使用matplotlib的保存方法来保存seaborn的图像。

plt.savefig("test.png")

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

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

相关文章

Servlet学习笔记

简介 浏览器请求处理流程&#xff1a;浏览器发请求 > 服务器tomcat( > 应用程序 ( > servlet) ) Servlet应用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放项目的层级结构 注释&#xff1a;servlet原引用包名 javax.serv…

卡尔曼滤波器

欢迎访问我的博客首页。 卡尔曼滤波器 1. 参考 1. 参考 卡尔曼滤波器&#xff0c;B 站&#xff0c;2020。扩展卡尔曼滤波器&#xff0c;CSDN&#xff0c;2023。

Git的安装以及SSH配置

前言 近期工作需要&#xff0c;所以版本管理工具要用到Git&#xff0c;某些操作需要ssh进行操作&#xff0c;在某次操作中遇到&#xff1a;git bash报错&#xff1a;Permission denied, please try again。经排查是ssh没有配置我的key&#xff0c;所以就借着这篇文章整理了一下…

WorkPlus即时通讯,让沟通零障碍!企业协作更高效

如今&#xff0c;随着信息技术的快速发展&#xff0c;企业对于高效沟通和即时协作的需求也日益增长。在这个数字化时代&#xff0c;WorkPlus作为一款领先的企业级移动办公平台&#xff0c;以其强大的即时通讯功能和卓越的用户体验&#xff0c;成功为企业打造了高效沟通的新时代…

input = torch.randn(20, 2, 11, 11, 32)输出形式

input torch.randn(20, 2, 11, 11, 32) m torch.nn.AdaptiveAvgPool3d((1,1, 32)) xm(input) print(x.shape) 结果&#xff1a; 也就是不用管批次和通道数

pico示波器使用

文章目录 Pico示波器保存波形Pico示波器录制数据Pico示波器解析CAN报文Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形: 在示波器上选择要保存的波形。连接示波器到计算机上,可以使用USB或者Ethernet连接。打开PicoScope软件,选择“File”菜单,然后选择“Save As…

Python开发运维:Python垃圾回收机制

目录 一、理论 1.Python垃圾回收机制 一、理论 1.Python垃圾回收机制 &#xff08;1&#xff09;引⽤计数器 1&#xff09;环状双向链表 refchain 在python程序中创建的任何对象都会放在refchain链表中。 name "david" age 20 hobby ["篮球",游泳…

放苹果 .

把m个同样的苹果放在n个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f; 注意&#xff1a;如果有7个苹果和3个盘子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#xff0c;1&…

spring集成mybatis简单教程

首先说下实现了什么效果&#xff0c;就是不用每次查询前手动创建 sessionFactory和添加datasource文件了。 整个工程结构是这样的 这次我也把代码放在了gitee上&#xff0c;方便大家更全貌的看到所有的实现细节。代码链接如下&#xff1a; Java: 一些Java代码 (gitee.com) …

大话数据结构-查找-多路查找树

注&#xff1a;本文同步发布于稀土掘金。 7 多路查找树 多路查找树&#xff08;multi-way search tree&#xff09;&#xff0c;其每个结点的孩子可以多于两个&#xff0c;且每一个结点处可以存储多个元素。由于它是查找树&#xff0c;所有元素之间存在某种特定的排序关系。 …

排序:归并排序

目录 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 思路分析&#xff1a; 代码分析&#xff1a; 划分区间思路&#xff1a; 代码思路分析&#xff1a; 归并排序——有递归的&#xff1a; 基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff…

2023 CCF中国软件大会(CCF ChinaSoft)“软件工程教育”论坛 成功召开

2023年12月1日&#xff0c;2023年度CCF中国软件大会“软件工程教育”论坛成功召开。 ✦ 自去年来大模型技术的出现以及在各个领域的应用&#xff0c;对相关的学科和行业产生了深刻的影响。软件工程首当其冲&#xff0c;以ChatGpt和CopilotX等为代表的智能化开发工具可以帮助软…

2024年网络安全竞赛-数字取证调查attack817

​ 数字取证调查 (一)拓扑图 服务器场景:FTPServer20221010(关闭链接) 服务器场景操作系统:未知 FTP用户名:attack817密码:attack817 分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户第一次访问HTTP服务的数据包是第几号,将该号数作为Flag值…

倪海厦:教你正确煮中药,发挥最大药效

同样的一个汤剂&#xff0c;我开给你&#xff0c;你如果煮的方法不对&#xff0c;吃下去效果就没那么好。 所以&#xff0c;汤&#xff0c;取它的迅捷&#xff0c;速度很快&#xff0c;煮汤的时候还有技巧&#xff0c;你喝汤料的时候&#xff0c;你到底是喝它的气&#xff0c;…

RTMP流设置超时时间失败

使用FFmpeg(版本是5.0.3&#xff09;将rtmp流作为输入&#xff0c;设置超时时间&#xff08;使用-timeout参数&#xff09;&#xff0c;结果报错&#xff1a;Cannot open Connection tcp://XXX:1935?listen&listen_timeout 通过./ffmpeg -help full 命令查看FFmpeg帮助&am…

Evidently:一个神奇的Python库,机器学习必备!

Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库。它有助于评估、测试和监控从验证到生产的数据和 ML 模型。它适用于表格、文本数据和嵌入。 简介 Evidently 是一个开源的 Python 工具&#xff0c;旨在帮助构建对机器学习模型的监控&#xff0c;以确保它们的…

2024年网络安全竞赛-A模块任务解析报告单(详细每一步)

2024年网络安全竞赛-A模块任务 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多种安全策略来提升服务器系统的网络安全防御能…

MyBatis参数获取和传递

1、参数获取方式 MyBatis可以通过以下两种方式获取参数值: #{变量名} 本质是占位符赋值 ${变量名} 本质是字符串拼接&#xff0c;如果拼接的是字符串类型或日期类型&#xff0c;则需要手动添加单引号 2、参数获取的几种情况&#xff1a; 2.1 mapper接口方法的参数为单个字…

判断一个Series序列的值是否为单调递减Series.is_monotonic_decreasing

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断一个Series序列中 各值是否单调递减 s.is_monotonic_decreasing [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd s1 pd.Series([3,2,1]) s2 pd.Series([3,2,4]) pri…

【代码随想录】算法训练计划41

dp 1、343. 整数拆分 题目&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 输入: n 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 思路…