数据可视化——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(二) 的相关文章

  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 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可以绘制哪些图形 左边是我们常用的绘图接口 右边则是一些基础设置 还有一些功能有待补充 依次来看这些函数的实现方式和具体功能