数据可视化——seaborn(二)

2023-11-01

上一篇文章主要讲述了有关seaborn的一些基础设置,可以让使我们绘制的图形更加饱满。接下来我们来看seaborn可以绘制哪些图形。左边是我们常用的绘图接口,右边则是一些基础设置,还有一些功能有待补充。依次来看这些函数的实现方式和具体功能。

目录

一、关系图

二、分类散点图

 三、未完待续


一、关系图

1.scatterplot():散点图是统计可视化的重要组成部分。它使用点云来描述两个变量的联合分布,其中每个点代表数据集中的一个观察。这种描绘可以推断出大量关于它们之间是否有任何有意义的关系的信息。

seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, 
data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, 
size_order=None, size_norm=None, markers=True, style_order=None,
 x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, 
 alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)

主要参数解析:

x,y:你需要传入的数据,一般为DataFrame中的列

hue:可以是dataframe中可以作为分类的某一列,主要作用就是分类

style:绘图的风格,可以是dataframe中可以作为分类的某一列

size:绘图的大小,可以是dataframe中可以作为分类的某一列

data:数据集,一般为DataFrame对象

palette:调色板

markers:bool,绘图的形状

ci:允许的误差范围

alpha:透明度

x_jitter,y_jitter:设置点的抖动程度

ax:绘制图像的坐标对象,否则使用当前坐标轴

示例:

仅使用x、y、data三个参数绘制图形        

tip = pd.read_csv('tips.csv')
sns.scatterplot(x='total_bill', y='tip', data=tip)

加入参数hue=‘time’后,数据依据time进行分组,使用其他特征的则会出现不一样的分组情况。

tip = pd.read_csv('tips.csv')
sns.scatterplot(x='total_bill', y='tip', hue='time', data=tip)

tip = pd.read_csv('tips.csv')
sns.scatterplot(x='total_bill', y='tip', hue='time', data=tip, style='time', 
size='size', markers=True)

 

 大家可以自行对比,看看有什么改变。

cmap = sns.cubehelix_palette(dark=.3,light=.8,as_cmap=True)
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='size', size='size',palette=cmap,data=tips)

 palette这个参数为我们接入了更加丰富的绘图颜色表示,但是色啊born本省自带的颜色其实也足够满足我们日常使用,如果还想掌握更加丰富的颜色表示,需要深入了解palette这个参数的用法。scatterplot()其他参数大家可以自行练习,这里就不在赘述。

2.lineplot():用几种语义分组的可能性画一条线图。可以使用色相,大小和样式参数针对数据的不同子集显示x和y之间的关系。这些参数控制使用什么视觉语义来标识不同的子集。通过使用所有三种语义类型,可以独立显示多达三个维度,但是这种情节样式可能难以解释,并且通常无效。使用冗余语义(即同一变量的色相和样式)有助于使图形更易于访问。

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None, data=None,
 palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, 
size_norm=None, dashes=True, markers=None, style_order=None, units=None, 
estimator='mean', ci=95, n_boot=1000, sort=True, err_style='band', 
err_kws=None, legend='brief', ax=None, **kwargs)

主要参数解析:

x、y:输入数据变量

hue:分组变量

markers:bool,对不同的对象使用不同的标记

dashes:确定如何为style变量的不同级别绘制线条的对象。设置为True将使用默认的短划线代码,或者您可以将短划线代码列表或style变量的字典映射级别传递给短划线代码。设置为False将对所有子集使用实线。线段在 matplotlib 中指定: (segment, gap)长度的元组,或用于绘制实线的空字符串。

err_style:是否用半透明误差带或离散误差棒绘制置信区间。

(大部分参数同上)

仅使用x,y,data三个参数绘图

sns.lineplot(x='timepoint', y='signal', data=fmri)

加入分组变量hue=’event‘ 

sns.lineplot(x='timepoint', y='signal', data=fmri, hue='event')

我们发现lineplot按照特征event中stim和cue两个分类变量将图像分成了两类。

sns.lineplot(x='timepoint', y='signal', data=fmri, hue='region', style='event',
 markers=True,dashes=True, err_style='bars', ci=68)

 加入了markers后,每一条线都有了自己独特的标记,同时显示错误条而不是错误带并绘制标准错误。

3.relplot():relplot可以说是scatterplot与lineplot的加强版,不仅具备了后两者的特性,而且有了更全面的数据展示功能。

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='brief',kind='scatter',
height=5,aspect=1,facet_kws=None,**kwargs)

主要参数解析:

row,col:data中的变量名,确定网格分面的类别变量

kind:可选scatter,line

(其他常见参数参考以上示例)

sns.relplot(x='total_bill', y='tip', data=tip, hue='sex', style='time', size='size',
 row='time', col='smoker')

 从这张图可以看到,添加了col和row变量后,能够更加清晰的为我们展示各个特征之间的关系。左上角第一个展示晚饭和不抽烟者的关系(仅仅是为了做示范)。

sns.relplot(x='timepoint', y='signal', data=fmri, hue='region', style='event', 
row='event', col='region', kind='line')

 当参数kind=’line‘时,又可以得到另一个关系图标。

二、分类散点图

1.stripplot(分布散点图):

按照不同类别对样本数据进行分布散点图绘制。stripplot(分布散点图)一般并不单独绘制,它常常与boxplot和violinplot联合起来绘制,作为这两种图的补充。

seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, 
hue_order=None, jitter=True, dodge=False, orient=None, color=None, 
palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)

常用参数解析:

jitter:抖动项,表示抖动程度,float或True

dodge:重叠区域是否分开

order:命令绘制分类级别,否则从数据对象推断级别。

sns.stripplot(x='day', y='total_bill', data=tip)

 将total_bill按照day分成了四组

sns.stripplot(x='day', y='total_bill', data=tip, hue='time', dodge=True)

这里需要注意的是,使用了hue之后,dodge设置为True,则将重叠部分分开。

sns.stripplot(x='time', y='total_bill', data=tip, order=["Dinner"])

使用order参数需要注意的是,order中的变量都要在x之中,否则只会显示画布。

 2.swarmplot(分布密度散点图):这个函数类似于stripplot(),但是对点进行了调整(只沿着分类轴),这样它们就不会重叠。这更好地表示了值的分布,但它不能很好地扩展到大量的观测。

seaborn.swarmplot(x=None, y=None, hue=None, data=None, order=None,
 hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, 
 edgecolor='gray', linewidth=0, ax=None, **kwargs)

参数基本上与stripplot一致,在此不多做赘述。

sns.swarmplot(x='day', y='total_bill', data=tip)

sns.swarmplot(x='day', y='total_bill', data=tip, hue='time', dodge=True)

 三、未完待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据可视化——seaborn(二) 的相关文章

  • 在 Pandas 中按日期获取有效合约

    我在检测 pandas DataFrame 中的活动合约方面遇到了一些困难 假设每一行都是一个协商 对于每一行 我有两列 initial date 和 end date 我想知道的是按日期划分的活跃合约数量 到目前为止我做了一个非常低效的方
  • Django:如何测试“HttpResponsePermanentRedirect”

    我正在为我的 django 应用程序编写一些测试 在我看来 它使用 HttpResponseRedirect 重定向到其他一些网址 那么我该如何测试呢 姜戈TestCase类有一个方法assertRedirects https docs d
  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • Python - 如何查询定义方法的类?

    我的问题有点类似于this one https stackoverflow com questions 5520580 how do you get all classes defined in a module but not impor
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • C语言-蓝桥杯-基础练习 矩阵乘法

    问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M 1 lt N lt 30 0 lt M lt 5 表示矩阵A的阶数和要求的幂数 接下
  • Python爬虫之Js逆向案例(12)-知乎答案批量获取保存到CSV文件

    声明 知乎答案批量获取分析仅用于研究和学习 如有侵权 可联系删除 大家好 本期分享的内容是一个关于批量获取知乎答案的案例 本案例的重点是教大家在写爬虫时如何更规范的去编写自己的爬虫 场景是这样的 最近在帮一位同学排查几个爬虫问题 于是乎我三
  • Pandas实战-Series对象

    本文将主要介绍以下内容 1 Series概述 2 从Python对象创建Series 3 读取最前面和最后面的数据 4 数学运算 5 将Series传递给Python的内置函数 Series是Pandas的两个主要数据结构之一 它是用于存储
  • 强化学习-稀疏奖励

    稀疏奖励 出现的原因 训练agent的时候 多数时候agent获取不到reward 没有奖励或惩罚 乱探索什么也学不到 这是不是奖惩设置不合理的一种体现 解决方案 Reward Shaping Reward shaping 的思想是说环境有
  • Tomcat是如何隔离Web应用的

    Tomcat通过自定义的类加载器WebAppClassLoader打破了双亲委托机制 目的就是为了优化加载Web应用目录下的类 Tomcat 作为 Servlet 容器 它负责加载我们Servlet 类 此外它还负责加载 Servlet 所
  • (LeetCode) 两数相加-----C语言实现【详细讲解】

    目录 1 题目要求如下 2 做题之前我们先来分析一下题目 看看我们究竟要做什么 怎么做 3 下面我们将对代码进行分开讲解 4 最后附上完整的代码供大家学习参考 题目要求如下 给你两个 非空 的链表 表示两个非负的整数 它们每位数字都是按照
  • 用数组slice方法,更新视图

    用数组slice方法 更新视图 定义和用法 slice 方法可从已有的数组中返回选定的元素 slice 方法可提取字符串的某个部分 并以新的字符串返回被提取的部分 注意 slice 方法不会改变原始数组 var fruits Banana
  • HDD/SSD/NVM存储介质

    HDD SSD NVM存储介质 NonVolatile Memory 非易失存储器 具有非易失 按字节存取 存储密度高 低能耗 读写性能接近DRAM 但读写速度不对称 读远快于写 寿命有限 需要像ssd一样考虑磨损均衡 当电流关掉后 所存储
  • proteus8.8版本出现闪退的原因分析和解决方案

    如果 你是刚进入单片机仿真的小朋友 并且也对单片机仿真感兴趣 如遇到下列情况不要着急 这种情况的出现 原因我还没有找到或者说干脆没有分析明白 尝试过重新安装过软件 但未果 但是 对于proteus闪退的情况 可以告诉你一个亲测好用的方法 切
  • AI智能无损放大图片网站

    https bigjpg com
  • 使用superset完成mysql数据库或者hive数据库的数据可视化

    虚拟机安装步骤 注意事项 以下bigdata100均记得更换为bigdata1即可 确保本地电脑已经安装好了VMware Workstation Pro 下载地址 下载 VMware Workstation Pro CN 清华大学镜像源 h
  • Android学习博客和文章存档

    Android基础 Android总结篇 http blog csdn net codeemperor article details 51004189 Android最佳性能实践 一 合理管理内存 http blog csdn net g
  • Linux命令行中创建的软连接(ln -s)的无法移动问题,以及绝对路径和相对路径的概念

    最近刚开始学习鸟哥的Linux基础篇 昨天试验了其中的一些命令 发现在某一个目录下对某个目录创建的软连接在移动到另一个目录下之后就无法正常打开了 问了下同学 这个问题顺利的解决了 首先 在目录dir1下创建一个目录dir2 用到的命令是 j
  • SpringMVC(狂神学习笔记)2021-10-5

    注意 本笔记是在学习狂神的视频教程的记录 1 回顾MVC 1 1 什么是MVC MVC是模型 Model 视图 View 控制器 Controller 的简写 是一种软件设计规范 是将业务逻辑 数据 显示分离的方法来组织代码 MVC主要作用
  • CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda错误

    在使用anaconda创建一个新的环境 执行 conda create n tf110 python 3 6 出现了 CondaHTTPError HTTP 000 CONNECTION FAILED for url
  • 我的电路实践

    任务一 任务二 任务三 任务四
  • 自动解压目录及子目录下所有压缩文件的批处理(偷懒专用^_^)

    以下内容存为 bat文件 置于你需要操作的目录下 双击运行即可自动解压目录及子目录下的所有 rar压缩文件 保持原有目录结构 并在解压后删除原压缩文件 可以根据自己需要对目录等进行修改 改成带参数的批处理或者对特定目录操作的批处理 将这个批
  • caliper的实操与报错合集,超详细的教程

    实操 验证python make g gcc git版本 sudo apt install y python2 7 sudo apt install y pip sudo apt install y make sudo apt instal
  • ACL2022 用于开放域问答的复制增强生成模型 A Copy-Augmented Generative Model for Open-Domain QuestionAnswering

    第一遍 标题 摘要 结论 可以看一看方法和实验部分重要的图和表 这样可以花费十几分钟时间了解到论文是否适合你的研究方向 第二遍 确定论文值得读之后 可以快速的把整个论文过一遍 不需要知道所有的细节 需要了解重要的图和表 知道每一个部分在干什
  • 数据可视化——seaborn(二)

    上一篇文章主要讲述了有关seaborn的一些基础设置 可以让使我们绘制的图形更加饱满 接下来我们来看seaborn可以绘制哪些图形 左边是我们常用的绘图接口 右边则是一些基础设置 还有一些功能有待补充 依次来看这些函数的实现方式和具体功能