Python可视化Seaborn库详解——绘图方法
liuian 2024-12-15 15:25 35 浏览
在《Python可视化Seaborn库详解——绘图设置 》一文中,我们介绍了Seaborn库的绘图参数设置,本文我们将介绍具体的绘图方法。
其实虽然Seaborn库看着绘图函数多,但有几个函数的泛化性非常强,通过参数的设置是可以绘出多种图形的。为了便于掌握这些函数,本文会对这些方法进行归纳整理,力争做到提纲挈领的目的。
绘图方法分类
结合图形的性质,将常规的可视化图形分为了三类。
其中,线性关系所涉及到的是折线图和散点图,这两类图形在日常运用中非常常见;分类关系主要是描述不同维度下数据的统计结果,如条形图、箱图等;组合关系就类似于高级程序语言,它是由不同的基础图形组合而来的。
下面我们将一一介绍这些绘图方法。
线性关系可视化
我们用泰坦尼克号数据作为案例,首先进行数据准备。
import seaborn as sns
import pandas as pd
import numpy as np
data_raw=pd.read_csv("数据源/Titanic/train.csv")
df=data_raw.copy()
df.columns=[x.lower() for x in df.columns]
- relplot
relplot函数和待会要介绍的catplot函数一样,均是属于一般型方法,它通过kind参数可分别作折线图和散点图,而且也可通过col和row参数进行分面。另外,该函数要求的数据格式必须是DataFrame。下图为该函数的绘图。
sns.relplot(x="passengerid",y="age",col="pclass",hue=None,
row=None,kind='scatter',data=df)
#kind为line,scatter;col表示按照该列进行分列绘图
#下面是具体的折线图和散点图函数,但这两种方法均不能进行分面
sns.lineplot(x="passengerid",y="age",data=df)
sns.scatterplot(x="passengerid",y="age",data=df)
分类关系可视化
分类关系有两个一般性绘图方法:catplot和distplot。
- catplot
该函数可以绘制八种分类图,并可以进行分面。每种分类图也有相应的函数,可以进行更细致的参数设置,但均不能进行分面。
sns.catplot(x="survived",y="age",hue=None,row=None,col=None,
data=df,kind=j,ax=axes[i])
#hue对X轴进行二次分组,row按行分面,row按列分面,kind控制图形种类,
#有strip,swarm,box,violin,boxen,point,bar,count,strip为默认值
fig,axes=plt.subplots(3,3,figsize=(30,24))
ax=axes.flatten()
sns.stripplot(x="survived",y="age",data=df,ax=ax[0]) #条形散点图
sns.swarmplot(x="survived",y="age",data=df,ax=ax[1]) #避免散点重叠的条形散点图
sns.boxplot(x="survived",y="age",data=df,ax=ax[2]) #箱线图
sns.countplot(x="survived",data=df,ax=ax[3]) #统计图
sns.barplot(x="survived",y="age",data=df,ax=ax[4]) #条形图
sns.violinplot(x="survived",y="age",data=df,ax=ax[5]) #小提琴图
sns.boxenplot(x="survived",y="age",data=df,ax=ax[6]) #增强箱图
sns.pointplot(x="survived",y="age",data=df,ax=ax[7]) #点图
上图为八种不同的分类图。
- distplot
直方图是较为特殊的分类关系图,虽然它属于分布函数,但也可视为一种分类。该函数通过hist和kde参数可控制绘制的图是直方图还是密度图,或是二者的结合。
fig,axes=plt.subplots(1,2,figsize=(12,5))
sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=True,kde=False,ax=axes[0])
sns.distplot(df["age"],bins=[0,20,40,60,80,100],hist=False,kde=True,ax=axes[1])
sns.kdeplot(df["age"],shade=True,vertical=False)
#核密度曲线
组合关系可视化
组合关系包含的都是一些较为复杂的图,本文介绍三种。
- pairplot
该函数主要描述数据变量两两之间的关系图,默认都是散点图。
sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white",annot=True,linewidths=0.1,cmap='YlGnBu')
#cmap即colormap plt的颜色对象,annot系数值是否显示,
#矩阵数据集,行为矩阵的列名称,列为矩阵的行索引,如果是dataframe,则行为行索引
- heatmap
热力图是一款非常热门的图形,通过颜色来反映数据之间的关系。
sns.heatmap(data=df[["age","sex","pclass","fare"]].corr(),linecolor="white",
annot=True,linewidths=0.1)
#annot系数值是否显示
#data最后是矩阵数据集,图形的行为矩阵的列,列为矩阵的行索引,如果是dataframe,则行为行索引
- factorplot与FacetGrid
这是两个分面函数,分面的意思就是在一张画布中画多个图形。
sns.factorplot(x="survived", y="age",row="sex",col="pclass",
data=df, kind="strip")
#多面板绘图
g=sns.FacetGrid(data=df,row="sex",col="pclass") #先画出轮廓
g.map(sns.stripplot,"survived","age") #进行补充
其实这些分面图形通过catplot方面也是可以实现的。
sns.catplot(x="survived",y="age",col="pclass",hue=None,
row="sex",kind='strip',data=df)
结语
将这些方法进行归类后就会发现,熟记并掌握这些函数变得容易多了。其实,可视化的原理并不复杂,复杂的只是绘图细节部分。因为每种组成部分都有众多的参数,参数还有不同的取值。
当然了,常规的可视化需求我们采用默认设置就足够了!
相关推荐
- x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
-
还在为命令行下处理JSON数据烦恼吗?jellex来了!它是一款基于终端的交互式JSON和JSONLines数据处理工具,让你用熟悉的Python语法,轻松过滤、转换和探索JSO...
- 一篇长文带你在Python里玩转Json数据
-
Json简介Json(JavaScriptObjectNotation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...
- Python JSON 魔法手册:数据转换的终极艺术
-
对话实录小白:(崩溃)我从API拿到了JSON数据,怎么变成Python对象?专家:(掏出魔法书)用json模块,轻松实现数据转换!JSON基础三连击1.字符串Python对...
- Python JSON 详解教程(python json())
-
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式(lightweightdatainterchangeformat)常用于Web应用、配置文件(co...
- Python 数据的 JSON 格式序列化及反序列化
-
在Python中,将数据转换为JSON格式非常简单,可以使用内置的json模块。json模块提供了json.dumps()和json.dump()方法,用于将Python对象...
- 如何使Python类可JSON序列化(python json 类)
-
技术背景在Python开发中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。然而,Python的json模块默认只能序列化一些基本数据类型,如字典、列表、字...
- 详细介绍一下Python如何对JSON格式数据进行处理?
-
在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...
- Python 字典l转换成 JSON(python转化字典)
-
本文需要5分钟。如果对您有用可以点赞评论关注.Python字典到JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于ECMAScrip...
- 打造熟悉的VS界面风格(vs界面设计美化)
-
用惯了老机子的VS界面,换新机子时,各种不适应。现在重新打造老款样式:1)下载VisualStudio2013ColorThemeEditorhttps://marketplace.vis...
- 办公小技巧:全部亮相 让Excel单元格完全显示文本
-
平时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记...
- WinForms 中的 CheckBox 控件使用指南
-
在WinForms中,CheckBox控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用CheckBox控件的一些基本信息和示例代码。创建...
- 图片转文字--四种OCR工具的安装和使用
-
本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...
- C# 给Word每一页设置不同图片水印
-
Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对W...
- 集成的面向对象控件Xtreme Controls正式发布v17.0.0
-
CodejockXtremeControls为Windows图形用户软件工程师提供众多的有关MFC的控件产品,该产品是通过完全测试并专门为图形用户设计的一款专业控件。它是一款集成了面向对象的控件被...
- Win10 Build 10061老问题修复新问题来
-
|责编:刘菲菲【中关村在线软件资讯】4月23日消息:微软今天正式推送了Windows10Build10061预览版这个版本除了正常的功能更新和调整外,还修复了多个bug。其中一部分对于开发者开...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
-
- x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
- 一篇长文带你在Python里玩转Json数据
- Python JSON 魔法手册:数据转换的终极艺术
- Python JSON 详解教程(python json())
- Python 数据的 JSON 格式序列化及反序列化
- 如何使Python类可JSON序列化(python json 类)
- 详细介绍一下Python如何对JSON格式数据进行处理?
- Python 字典l转换成 JSON(python转化字典)
- 打造熟悉的VS界面风格(vs界面设计美化)
- 办公小技巧:全部亮相 让Excel单元格完全显示文本
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- react-admin (33)
- vscode切换git分支 (35)
- vscode美化代码 (33)
- python bytes转16进制 (35)